home *** CD-ROM | disk | FTP | other *** search
/ A.C.E. 2 / ACE CD 2.iso / FILES / DOCS / SBASEP4D.LHA / SuperBasePart1.doc < prev    next >
Text File  |  1994-11-27  |  102KB  |  2,844 lines

  1.  
  2.             SUPERBASE
  3.  
  4.  
  5.              PART 1
  6.  
  7. WELCOME TO SUPERBASE   
  8.  
  9. This Introductory session with Superbase will give you an understanding of
  10. how to perform some of the basic database operations of the Superbase system.  
  11. Some more complex functions are explained in the section Working with Superbase.
  12.  
  13. OPENING A FILE
  14.  
  15. If you look at the top left-hand corner of the screen you will see a
  16. message that reads "Superbase:  Please open a file".  You always see this
  17. message when you start Superbase up, or when there is no file open.  Since
  18. you can't do any work without a file, let's open one and take a look at it.
  19.  
  20. Files can only be opened from the Project menu.  This is the first menu on
  21. the menu bar.
  22.  
  23. SUPERBASE REQUESTERS
  24.  
  25. Superbase now requestes the name of the file you wish to open.
  26.  
  27. Requesters like this one (some are more complicated) are used in most
  28. Superbase operations.  They also communicate messages to the user.  They
  29. are known as requesters because their function is to request specific
  30. action from the user.  Usually the action involves making selections by
  31. clicking the mouse or typing in a number of a text value of some kind.
  32.  
  33. Many requesters show a panel that contains a list of items such as file
  34. name or field names.  The panel may be only a few lines long, so there may
  35. be more files or fields than can be shown at one time.  If there's a gap at 
  36. the bottom of the scroll bar there are more items to be viewed. You can show 
  37. them by dragging down the scroll bar at the right of the panel, or by clicking 
  38. on the downwards pointing arrow gadget below the scroll bar.
  39.  
  40. Many Superbase requesters include a Clear button.  This has the effect of
  41. removing anything that's in the Selection Box, and can be used at any time.
  42.  
  43. CHOOSING THE ADDRESSES FILE
  44.  
  45. Move the pointer into the panel which contains a list of file names.  Move
  46. it over the file name Addresses.  This is the demonstration file you'll be
  47. using for the rest of this session.  Using the left-hand button, click once 
  48. on the name Addresses.  Superbase copies the name of the file you've
  49. selected into the Selection Box -- that's the box underneathe the panel of
  50. tile names.  (If you see the wrong file name in the box, move the pointer
  51. carefully onto the right file name, and click again.) Once you've selected
  52. the file, move the pointer onto the OK button and click once.  Superbase
  53. now opens the Addresses file.
  54.  
  55. THE MAIN DISPLAY
  56.  
  57. When Superbase opens a file from the start up screen, it automatically
  58. reads the first record in the file and shows it on the Main Display screen. 
  59. You'll see the name of the file appear on the title bar at the top of the 
  60. window, followed by the name of the field on which the file is currently 
  61. indexed.
  62.  
  63. The Main Display is Superbase's permanent window onto your database.  It's
  64. like a large worksheet, 273 colulmns across; the number of lines you can
  65. see depends on the size of your window.  Surperbase uses the Main Display
  66. to show you the records in the current file, as well as the results of some 
  67. other operations.  At the bottom of the Main Display is the Control Panel, 
  68. which we'll be looking at in a minute.
  69.  
  70. On the Main Display, the field names for each record in the Addresses file
  71. appear down the left-hand side of the screen.  The data for each filed is
  72. displayed to the right of its field name.  If the data for a filed is wider 
  73. than the window, it extends off to the right.  You can bring it into view 
  74. using the scroll bar at the bottom of the window.
  75.  
  76. Remember that if there were more fields in the record than you could see,
  77. you could view them by dragging the scroll bar at the right of the window
  78. downwards, or by clicking on the downward pointing arrow.
  79.  
  80. RECORD VIEW, FORM VIEW AND TABLE VIEW
  81.  
  82. The record format you're looking at now is only one of the three possible
  83. ways of looking at your file.  It's called Record View.  This view shows
  84. the records one at a time, restricting the format by keeping the field
  85. names on the left and limiting you to one field per line.  This restriction 
  86. allows records to be scrolled up and down the screen with the Control Panel 
  87. buttons.
  88.  
  89. In Form View, you also see one record at a time.  Each record is like a
  90. form or page and, as you'll see later, you can drag the fields around to
  91. create a worksheet desinged to suit your application.
  92.  
  93. The third display format is Table View.  This displays the field names
  94. across the top of the screen with the data appearing in rows and columns,
  95. each record occupying one line.
  96.  
  97. SWITCHING TO TABLE VIEW
  98.  
  99. Select Table View from the Set Menu.  You will see the field names appear
  100. across the top of the screen.  The same record is shown, but each item of
  101. data appears underneath its field name.  As with Form View, there are ways
  102. of changing this row and colulmn display to suit your own preferences which 
  103. we'll explain later.
  104.  
  105. SCROLLING THE SCREEN
  106.  
  107. While you are viewing your record in Table View you will notice that the
  108. field names do not all fit onto the screen.  The fileds to the right can be 
  109. viewed using the arrow at the right of the bottom scroll bar.  Move the
  110. pointer onto this arrow, and click on it once.  The display shifts five
  111. columns to the left.  Click once on the left-hand arrow to shift right and
  112. restore the display.  If you want to shift the display by larger areas,
  113. drag the bottom scroll bar with the mouse.
  114.  
  115. CONTROL PANEL
  116.  
  117. Now that you've opened a file, and discovered how to change the way in
  118. which records are displayed on the screen, let's look at the Control Panel. 
  119. This is your means of controlling the main display.  As you can see there 
  120. are 12 buttons, most of them modelled on the controls for a video cassette 
  121. or tape recorder, so you should find these conventions easy to learn and 
  122. remember.
  123.  
  124. Each button has a special purpose, and together they fall into three
  125. groups.  On the left are the Pause and Stop buttons.  Followed by seven
  126. buttons for browsing through the file.  On the right are three special
  127. purpose buttons which we'll examine later.  The functions of some controls
  128. are more intuitively obvious than others, so we'll take a look at the first 
  129. nine now, one by one.  Make sure you've set Table View for this exercise.
  130.  
  131.     ^       Current Record:  This button is used to display the current
  132. record.  When Table View has put a lot of records on the screen it can be
  133. helpful to select the current record as the top record in the display.
  134. Also, you can only Edit the current reacord, and this button is a useful
  135. way of ensuring that you've got the right record.  If you click on this
  136. button you will notice that Superbase clears the screen and then displays
  137. the current record.
  138.  
  139.     >    Next Record:  Allows you to view the next record in the file. 
  140. The order in which the records appear is dicided by the current index,
  141. which is shown by the message on the title bar of the main display window.
  142. Try this now, and you'll see the data for the next record come onto the
  143. screen.  In Table View it appears underneath the previous record.  In Form
  144. View it replaces the previous record.
  145.  
  146.     <    Previous Record:  This gets the previous record in the file, 
  147. relative to the current record.
  148.  
  149.     >>    Fast Forward:  Instead of moving forwards through the file one
  150. record at a time by pressing the Next button, you can move much quicker
  151. using the Fast Forward button.  Click on this button, and Superbase gets
  152. the next records in the file, displaying them row by row until the screen
  153. is full, when it selects the Pause button.
  154.  
  155.     ||    Pause:  When the Pause button is selected, you cannot select 
  156. any menu item until you either release it or click on the Stop button next
  157. to it.  You can, however, use the other Control Panel buttons.  So, to view 
  158. the next screen of records, release the pause by clicking on the Pause button.  
  159. Superbase continues with the Fast Forward display of records, stopping when the 
  160. next screen is full, or when it reaches the end of the file.  Pause is useful 
  161. when you're searching for a record and you want to stop from time to time to 
  162. read the screen.
  163.  
  164.     <<    Rewind:  This does the opposite of the Fast Forward button.  
  165. You will see the data appear from the top of the screen,in reverse index
  166. order.  If you do this immediately after Fast Forward there will be an
  167. apparent delay while Superbase displays records over the text of the
  168. existing display.
  169.  
  170.     |<    First:  Pressing this button automatically displays the first 
  171. record in the file, according to current index order.
  172.  
  173.     >|    Last:  Pressing this button automatically displays the last 
  174. record in the file, according to current index order.
  175.  
  176.     |    Stop:  If you want to stop the Fast Forward or Rewind display,
  177. click on Stop.  You must also click on Stop if you want to interrupt Pause
  178. when it's selected.
  179.  
  180. OPENING FIELD TO VIEW
  181.  
  182. As Superbase imposes no limit on the number of fields per record, you need
  183. to have a way of restricting the fields that actually appear on the Main
  184. Display.  You can do this with the Open Field option on the Project Menu.
  185.  
  186. Display the Project Menu, and select Open Fields.  The basic procedure for
  187. selecting fields is very simple:
  188.  
  189. 1.  Click on a field name in the left-hand panel.  Superbase copies it into 
  190. the right-hand panel.  
  191.  
  192. 2.  Repeat until the selection of fields you want is in the right-hand
  193. panel.  
  194. 3.  Click on OK.
  195.  
  196. The list of fields in the right-hand panel is called the Open Fields List.
  197. Let's make one now.  Move the pointer onto the list of fields names, and
  198. click on City.  Nitice how Superbase copies it across.  Now click on
  199. Lastname.  When you have both names in the list, click on OK.  (If you make 
  200. a mistake, DEL romoves the current field from the right-hand panel; Clear 
  201. removes the whole list.)
  202.  
  203. Superbase immediately returns to the Main Display showing the data for the
  204. two open fields.  Try out the Control Panel buttons to see their effect.
  205. Experiment with Record View as well as Table View.
  206.  
  207. When you've finished, restore the full set of fields by selecting Close
  208. Fields from the Project menu.
  209.  
  210. PAGING
  211.  
  212. This is another feature which gives you control over the Main Display:
  213. the Paging option.
  214.  
  215. If Record View is not set, select it now from the Set Menu.  Then go back
  216. to the Set menu, and move the pointer down to the Paging item, which should 
  217. have a check mark against it.  Release the mouse button while Paging is 
  218. highlighted.  You've now turned the paging option off.  (You can check this 
  219. by looking at the Set menu again; there should be no check mark against the 
  220. Paging item.)
  221.  
  222. Now, select the first record in the file by clicking on the First Record
  223. button.  Then click on Fast Forward, and watch the display.  You'll see
  224. that Superbase down't pause when the screen is full -- It just goes on
  225. displaying records.  You can still use pause to halt the display, but the
  226. automatic pausing at the end of each "page" of data no longer occurs.  The
  227. same applies when Rewind is in use, except that the records appear at the
  228. top of the screen.
  229.  
  230. If you now switch back to Table View and try out some of the Control Panel
  231. buttons, you'll see that with Paging off the difference is similar to that
  232. in Record View.  Each record appears below the last, without clearing the
  233. screen.  Rewind displays records from the top down, as in Record View.
  234.  
  235. MOVING COLUMNS
  236.  
  237. For this exercise you need to be able to see all the fields on the screen,
  238. not just those in the Open Fields list, so if you have an open Fields list
  239. in use, close it now by selecting Close Fields from the Project Menu.
  240.  
  241. You can see that if you have all the fields open in Table View, some of the 
  242. field data is very likely to be hidden from view.  Normally, to see hidden 
  243. fields you have to scroll the screen to the right.  However, Superbase 
  244. provides a way of closing up columns to get more data on the screen.
  245.  
  246. Assuming you're in Table View -- set it if you're not -- click on the
  247. First button, then the First Record button on the Control Panel in order to 
  248. get the first record of the Addresses file on your screen.
  249.  
  250. MOVING A COLUMN TO THE LEFT
  251.  
  252. Now move the pointer so that it is on the space to the right of "M" in the
  253. Title Field.  Once you have done that press and hold down the left-hand
  254. button of the mouse.  As you do this you will see two vertical lines
  255. appear, forming a column beneath the Title field.  There are also lines
  256. extending off to the right of the screen.
  257.  
  258. Keeping the left button depressed, drag the pointer a little to the left,
  259. then release the mouse.  You will see that the column moves, and when you
  260. release the mouse the data beneath the field name has shifted to the left.
  261. All columns to the right have also moved leftwards.
  262.  
  263. Now try the same with the Forename field.  This time ove the column so
  264. that it is just to the right of the "e" in Title.  If you also try this
  265. with Lastname and Street you will see that as you move the columns over to
  266. the left the field name City appears on the right of the screen.
  267.  
  268. If you now move the City column to the left, the Code field will appear on
  269. the screen.  Finally, if you move the Code field, Country will appear on
  270. the right- hand side.  So by moving the columns you've got all the fields
  271. on one screen instead of two.
  272.  
  273. Notice that you can move a column so that it overlaps the column to its
  274. left, truncating the data.  This can be useful.
  275.  
  276. MOVING A COLUMN TO THE RIGHT
  277.  
  278. If you move a column back to the right, the truncated field name and data
  279. are not automatically restored to their full length.  A quick way of
  280. restoring the length of a fiels is to double click in its column.  Then if
  281. you click on the Current Record button the full field name and data will
  282. reappear.  But as this only displays one record you will have to use Fast
  283. Forward if you want to redisplay a screen of Record data.
  284.  
  285. FORM VIEW DESIGN
  286.  
  287. Superbase allows you to rearrange the positions of the fields in Form
  288. View, setting more than one field on a line, creating columns of field to
  289. resemble invoices or other business forms, and generally talloring the
  290. system to suit your own application.  The full 273 column woeksheet is
  291. available for Form View, and you can vary the depth by dragging fields
  292. downwards, creating new lines.
  293.  
  294. You can use Form View for creating new records and editing them, as well 
  295. as for display.  By setting the Printer option on, you can copy the visible 
  296. portion of the worksheet to the printer.
  297.  
  298. Select Form View now from the Set Menu.
  299.  
  300. Make sure you've got the Addresses file open, and that the current record
  301. is the first record in the file.
  302.  
  303. DEFAULT FORM VIEW
  304.  
  305. If you look at the screen you can see that the fields names already appear
  306. in a Form View.  This is the default Form, which we have predefined for
  307. this demonstration file.  You can change it, and then save it with Project
  308. Save File.  Once a Form has been saved, the fields will appear in that
  309. layout every time you open the file.
  310.  
  311. MOVING FIELDS
  312.  
  313. Let's move the Lastname field to another position on the screen.
  314.  
  315. Move the pointer so that it's on the field name Lastname.  Then press and
  316. hold down the left-hand button of the mouse.  Superbase outlines the field
  317. name and its data area.  (If you see a cursor instead, you've started
  318. editing by mistake.  Carefully click again on the field name itself.) Now
  319. drag the outlined box to a new position two lines above its present
  320. position.  Release the mouse button.  As you can see, the field name and
  321. data have moved to this new position.
  322.  
  323. Now, if you want to, you can arrange the Form View for Addresses in any
  324. way you like.  This can be just an experiment, but if you want to save the
  325. present arrangement, you can do so.  Select Save File from the Project
  326. Menu.  Superbase stores the File Definition, which contains the Form View
  327. location of each field, on disk.
  328.  
  329. Although you have freedom to drag fields to any position on the screen,
  330. there are as usual a few limits to what you can do.
  331.  
  332.     You cannot place a field on top of either the name or the data area
  333. of another field.  If you try this, Superbase leaves the field you tried to 
  334. drag in its original position.
  335.  
  336.     Superbase won't let you move a field off the right or left-hand end
  337. of the worksheet.
  338.  
  339.     To gain more lines, move a field down into the Control Panel.  Then
  340. use the vertical scroll bar on the Main Display window to bring it back
  341. into view.  Move it down again if you still need more lines.
  342.  
  343.     To move a field over to the right of the worksheet, position it
  344. near the right-hand edge of the screen, then shift the display with the
  345. scroll bar, and drag the field further over.
  346.  
  347.     Only the open fields are shown, so close the Open Fields List if
  348. you want to see all the fields in Form View.
  349.  
  350. Finally, a small but entertaining feature.  Select Fast Forward, and drag
  351. the fields around as described above.  No problem.
  352.  
  353. SUMMARY
  354.  
  355. Time for a check list of what you should know before we proceed.
  356.  
  357.  
  358. *    How to open a file
  359. *    How to switch betgween Form View, Table View, and Record View
  360. *    How to switch Paging off and on
  361. *    How to drag columns around in Table View
  362. *    How to Open and Close a list of fields
  363. *    How to select the Current record
  364. *    How to move to the First record
  365. *    How to move to the Last record
  366. *    How to move to the Next record
  367. *    How to go to the Previous record
  368. *    How to use the Fast Forward to move forwards through the records
  369. *    How to Rewind to move backwards through the file
  370. *    How to Pause
  371. *    How to Stop
  372.  
  373. Understanding all these actions is essential if you wnat to be able to
  374. work easily with Superbase.  If you do not understand them or are uncertain 
  375. then take a little time to go back and re-read the appropriate sections 
  376. before continuing.
  377.  
  378. THE KEY LOOKUP BUTTON
  379.  
  380.     ?    Key Lookup:  This is for the retrieval of individual records.
  381. You enter a value for the field on which the file is currently indexed, and 
  382. Superbase uses the index to find and display the record.  You can only use 
  383. one index field at a time -- the Filter button is used for multiple value 
  384. searching.
  385.  
  386. When you click on the Key Lookup button you'll see a requester for the
  387. entry of a key value.
  388.  
  389. TYPING IN YOUR KEY
  390.  
  391. To be able to type in the box, you must move the pointer into it and click
  392. the mouse once.  This produces the cursor, and you can then type in your
  393. Index Key.  Suppose you want to find the record for Julie Kasper.  The file 
  394. is indexed on the Number field, so we can use the current index to search for 
  395. individuals by their Reference Numbers.  Click in the box and then type in 
  396. "KAS0001" (omit the quotation marks).  This is the Index Key.
  397.  
  398.  
  399. RETRIEVING THE RECORD
  400.  
  401. When you press Return or click on OK, Superbase looks up the first record
  402. for which the Number field has the value "KAS0001".  If there were more
  403. than one with this value, you would have to browse through the file with
  404. the Next Record or Fast Forward button to find the exact record you wanted.
  405.  
  406. KEY LOOKUP WITH A DIFFERENT INDEX
  407.  
  408. You're not restricted to one index.  Superbase allows you to have up to 999 
  409. indexes for each file, all automatically updated when you add or modify 
  410. records.  We've provided indexes on the other fileds besides the number field:  
  411. Lastname, City and Country.  Let's try one of these.  Select Open index from 
  412. the Project Menu.
  413.  
  414. Click on the field name Lastname; this is copied into the Selection Box.
  415. When you're ready, click on OK.  You've selected the Lastname index, and if 
  416. you look at the title bar at the top of the window you'll see that the
  417. message now reads "Superbase:  Addresses Indexed on Lastname".
  418.  
  419. The record on the main display has not changed.  Click on the Key Lookup
  420. button, and Superbase produces the Record Key requester.  As you did above, 
  421. click in the box and type in a key value, only this time type in "Forge". 
  422. Press Return or click on OK, and Superbase looks up the first record with 
  423. Forge in the Lastname field.
  424.  
  425. ENTERING PARTIAL VALUES 
  426.  
  427. You don't even need to type the full index key in many cases.  Try Key
  428. Lookup once more, but type in "Hut" and press Return.  Superbase finds the
  429. first record for Huttermann.  For your information, Superbase tells you
  430. that it didn't find the exact match.
  431.  
  432. THE FILTER BUTTON
  433.  
  434.     =    Filter:  This is a very powerful feature.  You may have 
  435. thousands of records in a database file, yet you may often want to review
  436. them (or print them out) on a selective basis.  The Filter allows you to
  437. enter a set of values, as simple or a comprehensive as you like, to
  438. restrict the display to only the records that match those values.
  439.  
  440. THE FILTER REQUESTER
  441.  
  442. Move the pointer and click on the Filter button on the Control Panel.
  443.  
  444. This requester looks more complex than the ones you have seen so far, but
  445. after a little practice with the demonstration file you'll find that you
  446. can remember how to use it easily.  It's important that you learn how to
  447. use the Filter, because Superbase uses filters in several other functions.
  448.  
  449. The requester has four main parts:  the Field Name Panel, the Operators,
  450. the Value Box, and the Main Box.  A Filter is created by a combination of
  451. clicking on field names and operators and typing in values.  These actions
  452. produce the Filter Command Line in the Main Box.  Let's look at each
  453. component of the Filter Requester in turn.
  454.  
  455. FIELD NAME PANEL
  456.  
  457. This appears on the left-hand side of the requester.  You can scroll the
  458. list of field names up and down in the usual way, using the scroll bar and
  459. arrows at the right of the Field Name Panel.  You specify that a field is
  460. to be used in the Filter by clicking on its name in this panel.
  461.  
  462. The list of field names is complete.  It's not affected by whether you have 
  463. an Open Fields List, so the fields that specify the Filter neen not be the 
  464. same as the ones that are shown in the Main Display.
  465.  
  466. OPERATORS
  467.  
  468. These appear to the right of the Field Name Panel, and can be divided into
  469. the Relational Operators, Logical Operators and Mathematical Operators.
  470. We'll see how these are used below.
  471.  
  472. VALUE BOX
  473.  
  474. This is the box with the word "Value" next to it.  You use it for typing
  475. in values such as names, numbers, and dates, which will form part of the
  476. Filter.
  477.  
  478. Always remember to press Return after typing in the Value Box.  You must 
  479. do this to ensure that the contents are copied to the Main Box.
  480.  
  481. MAIN BOX
  482.  
  483. This is the long box that appears below the Field Name Panel and extends
  484. across the whole requester.  When you make selections with the mouse or
  485. type values into the Value Box, Superbase copies them into the Main Box,
  486. building up the Filter Command Line.  In this way you get immediate
  487. feedback about the results of your selections.  The maximum length of the
  488. Filter Command Line is much greater than the apparent length of the box --
  489. up to 255 characters are allowed.  You can type directly into the Main Box, 
  490. but in these exercises we'll stick to making selections with the mouse.
  491.  
  492. USING THE OPERATORS
  493.  
  494. The Operators are the most complex aspect of the requester.  They are used
  495. to relate field names to other fields or values.  For example, if we wanted 
  496. to set up a Filter to show only the addresses in West Germany, we would need 
  497. the expression:  Country LIKE "West Germany".  Here, Country is a field name 
  498. obtained by clicking in the Field Name Panel; LIKE is selected by clicking on 
  499. the LIKE Operator button; and "West Germany" is typed into the Value Box.
  500.  
  501. TEXT STRING AND PATTERN MATCHING:  LIKE
  502.  
  503. When you're searching for names or text strings, uyou should avoid using
  504. the equals sign operator, and use LIKE instead.  This is because only LIKE
  505. accepts matches on either upper or lower case characters; it's said to be
  506. "case insensitive".  The equals sign operator, on the other hand, requires
  507. exact matches for what you type in:  It is "case sensitive".
  508.  
  509. LIKE also permits searches for text strings that include pattern matching
  510. characters.  these allow you to enter incomplete words for the Filter.  For 
  511. example, to find all the records where the Lastname begins with "C" you need 
  512. the Filter Command Line:  Lastname LIKE "C".  To specify a range add square 
  513. brackets to the value:  Lastname LIKE"[A-D]*"; this finds all the records 
  514. where the Lastname begins with "A", "B", "C", or "D".  Note that the Asterisk 
  515. is placed outside the brackets.
  516.  
  517. There are several other things you can do with the LIKE operator.  You'll
  518. find a complete list and a number of examples in Appendix B.
  519.  
  520. THE RELATIONAL OPERATORS
  521.  
  522. =    This specifies that the field is to be EXACTLY EQUAL TO the following 
  523.     value or field:  Balance = 2000.
  524.  
  525. <>    The field is to be NOT EQUAL TO the following value or field: 
  526.     Country <> "France".
  527.  
  528. >    The field is to be GREATER THAN the following value or field: 
  529.     Balance > 1000.
  530.  
  531. <    The field is to be LESS THAN the following value or field: 
  532.     Balance < 1000.
  533.  
  534. >=    The field is to be GREATER THAN OR EQUAL TO the following value 
  535.     or field:  Balance >= 1000.
  536.  
  537. <=    The field is to be LESS THAN OR EQUAL TO the following value 
  538.     or field:  Balance <= 1000.
  539.  
  540. THE LOGICAL OPERATORS AND, OR AND NOT
  541.  
  542. Thes provide links between different expressions like the ones given above. 
  543. You use them to specify alternatives and ranges for the Filter, either for 
  544. a single field or for a number of interrelated fields:
  545.  
  546. AND    Both of the conditions linked by AND must be satisfied for the 
  547.     record to be accepted by the Filter:  Country "West Germany" 
  548.     AND Balance >= 5000.
  549.  
  550. OR    Either of the conditions linked by OR is sufficient to make the 
  551.     record aceptable to the Filter:  Country LIKE "West Germany" OR 
  552.     City LIKE "Geneva".
  553.  
  554. NOT    NOT is slightly different.  It negates the effect of an expression:  
  555.     NOT (Country LIKE "West Germany" AND Balance > 5000).  This will 
  556.     find all the records other than the ones where the country is West 
  557.     Germany and the balance is greater than 5000.  Note the use made 
  558.     of Parentheses with NOT.
  559.  
  560. PARENTHESES
  561.  
  562. The ( and ) operators are used in the normal way, to give priority to one
  563. part of the expression over another.
  564.  
  565.     (    The following expression has a higher priority for evaluation 
  566. than the preceding expression.
  567.  
  568.     )    Required to end a higher priority expression.
  569.  
  570. The numbers of opening and closing parentheses must be equal.
  571.  
  572.  
  573. THE MATHEMATICAL OPERATORS
  574.  
  575.     +    This is used to express addition:  Balance > Amount + 1000.
  576.  
  577.     -    The minus sign expresses subraction:  Balance >  Amount - 1000.
  578.  
  579.     *    The asterisk is used for multiplication: Balance > Amount * 
  580.         1.15.
  581.  
  582.     /    The slash represents division:  Balance < Limit / 10.
  583.  
  584. TYPING IN THE MAIN BOX
  585.  
  586. The great power and flexibility of the Filter system is only achieved by
  587. giving the user control of every aspect of the operation.  Because you type 
  588. into the Main Box you include all kinds of expressions which are not
  589. available from the buttons on the requester itself, and all kinds of text
  590. and numeric values.
  591.  
  592. The price you pay for this flexibility is an increased risk of making
  593. mistakes.  This is not too serious, as you cannot harm your data by using 
  594. a Filter (although you can discard records using the Remove Records Filter). 
  595. However, you may see a Superbase "Can't do this" message concerning an error 
  596. in the Filter Command Line in two possible situations:
  597.  
  598. When you click an OK after creating or editing a Filter Command Line.
  599.  
  600. When you use a Filter after changing the definition of a field with Project 
  601. Edit.
  602.  
  603. If you see a "Can't do this" message you must either change the Filter
  604. Command Line or change the file definition.  Here's a summary of the
  605. editing facilities available when typing inside the Main Box:
  606.  
  607. FILTER COMMAND LINE EDITING
  608.  
  609. You can remove everything from the Main Box by clicking on the Clear button.
  610.  
  611. If you have clicked in the box, hold down the right-hand Amiga Key (next to 
  612. the space bar) and press X to delete its contents.  (Note:  we refer to this 
  613. key combination as Amiga-X).
  614.  
  615.     Provided you have not left the box -- the cursor is still visible
  616. -- Amiga-Q will restore the contents you deleted with the Amiga-X.  This
  617. does not work after clicking on Clear.
  618.  
  619.     If Superbase won't let you make an Operator selection when you
  620. return to modify an existing Filter Command Line, click in the Main Box and 
  621. press Return.  Now you can go ahead.
  622.  
  623.     Shift key and cursor right arrow and shift key and cursor left
  624. arrow move the cursor to the end and beginning of the Filter Command Line
  625. respectively.
  626.  
  627.     The DEL key romoves the character to the left of the cursor.
  628. Backspace repeats its action if held down.
  629.  
  630.  
  631. USING A FILTER
  632.  
  633. The Filter Command Line is made active by clicking on OK.  Whenever a
  634. Filter is in use, Superbase highlights the Flter button on the Control
  635. Panel.  You can perform all but one of the Control Panel record selection
  636. operations we've discussed, and Superbase will restrict the records
  637. displayed to the ones that match the Filter values.  For example, if you
  638. have specified the Country LIKE "West Germany" and you click on the First
  639. Record button, Superbase will go and find the first record in the file,
  640. according to the current index, which has the value "West Germany" in the
  641. Country field.
  642.  
  643. The Key Lookup button is an exception to the filter effect.  You can still
  644. recall individual records by entering an index key value, whether or not
  645. they match the Filter.
  646.  
  647. SUSPENDING A FILTER
  648.  
  649. There wil be times when you want to remove the Filter effect so that you
  650. can review all the records in the file again.  To do this, just click on
  651. the highlighted Filter button.  It reverts to normal, and you'll find that
  652. when you use the Control Panel Superbase acts as if there were no Filter.
  653.  
  654. MODIFYING OR RE-ACTIVIATING A FILTER
  655.  
  656. If you've set up a Filter and then suspended it, you can bring it back into 
  657. operation by clicking once more on the Filter button.  Superbase displays the 
  658. Filter requester, with the Filter Command Line in the Main Box just as you 
  659. left it.
  660.  
  661. If you want to, you can add to the Filter Command Line by clicking on more
  662. field names and oeprators (you may need to click in the Main Box and press
  663. Return first), or edit it after clicking in the Main Box, as described
  664. above.
  665.  
  666. Whether you've made any changes or not, just click on OK to use the Filter
  667. again.
  668.  
  669. FIFTEEN MINUTE TUTORIAL
  670.  
  671. Make sure you've got the Addresses file open, indexed on Lastname.  Set
  672. Table View with Paging off.  Go into Project Open Fields and open these
  673. fields:
  674.  
  675.     Forename
  676.     Lastname
  677.     Street
  678.     City
  679.     Country
  680.  
  681. In Table View, drag the Lastname column a few columns to the left, and then 
  682. do the same for City, overlapping the Street column if necessary, until the 
  683. Country column comes into view.
  684.  
  685. Click on the Filter button.
  686.  
  687. We are going to search for those name and address records where the person
  688. lives in the USA or West Germany.  So we'll use the Country field, and LIKE 
  689. operator, and the Value Box.  You'll see the results of your selections 
  690. appear as a Filter Command Line in the Main Box.
  691.  
  692. Move the pointer into the Field Names Panel, and click once on the down
  693. arrow to bring Country into view.  Then click on Country.  The name appears 
  694. in the Main Box.  Next, move the pointer to the right and click on the LIKE 
  695. button.  This also appears in the Main Box.  Now you must type in "USA". 
  696. This goes in the Value Box.  Move the pointer into the Value Box and click 
  697. on the mouse to produce the cursor.  Type in "USA" (no quotation marks). 
  698. Press Return -- this is essential, or the contents of the Value Box will not 
  699. be copied into the Main Box.  Your Filter Command Line should read:
  700.  
  701. Country LIKE "USA"
  702.  
  703. Next, you need the OR operator.  Click on it and Superbase copies it into
  704. the Main Box.  Now you must click on the Country field name again.  This is 
  705. important.  A Filter Command Line like this is not allowed:
  706.  
  707. Country LIKE "USA" OR "West Germany"
  708.  
  709. So, click on Country, as before, followed by LIKE.  Then, as before, click
  710. in the Value Box, and type in "West Germany".  Press Return.  Your Filter
  711. Command Line should look like this:
  712.  
  713. Country LIKE "USA" OR Country LIKE "West Germany"
  714.  
  715. If there are any mistakes click on Clear and repeat the steps above until
  716. you get it right.
  717.  
  718. You have built your Filter Command Line, so now you can put it into action. 
  719. Click on the OK button.  Superbase activates your Filter and displays the 
  720. first record in the file that matches the Filter.  Click on Fast Forward. 
  721. Superbase shows all the records that match the Filter.
  722.  
  723. Now de-activate the Filter.  Click on the Filter button so that it's not
  724. highlighted.  Now click on Rewind.  You'll see all the records in the file
  725. appear as normal.
  726.  
  727. Let's go back and add another condition.  Click on the Filter button to
  728. recall the requester.  Click on the OR operator, then on Country, then on
  729. LIKE, then in the Value Box, type in "France", and press Return.  Your line 
  730. should read:
  731.  
  732. Country LIKE "USA" OR Country LIKE "West Germany" OR Country LIKE
  733. "France".
  734.  
  735. Now click on OK and when Superbase shows the first record, click on Fast
  736. Forward.  You will see that Superbase has added the addresses in France to
  737. the display.
  738.  
  739. That concludes our short tutorial.
  740.  
  741. OTHER FILTER BASED OPTIONS
  742.  
  743. You should have acquired a feel for the way the Filter requester works,
  744. and you can experiment freely with the Addresses file to deepen your
  745. knowledge.  When you're ready, you can start using the Process options, 
  746. all of which are selected from the Process menu.
  747.  
  748. SUPERBASE PROFESSIONAL DATABASE MANAGEMENT LANGUAGE USER GUIDE
  749.  
  750. BEFORE YOU BEGIN...
  751.  
  752. This Volume presents you with two user guids, one for Superbase's Database
  753. Management Language(DML)and one for the Forms Editor. Although they are both 
  754. under the same cover, they can be treated as separate manuals. Each has its 
  755. own Contents, Index, chapter numbers and page numbers.
  756. Note that the Forms Editor is a separate program from Superbase Professional.
  757. You will find instructions on how to install and load it on your computer in
  758. the Readme document which is supplied on the demonstration file disk. If you
  759. haven't done so already, you should read this document now. It also provides
  760. details of any features of Superbase Professional that are not covered in
  761. either Volume 1 or 2.
  762.  
  763.              CHAPTER 1 - INTRODUCTION TO DML
  764.  
  765. Welcome to Superbase Professional's Database Management Language(DML). DML is
  766. based on the programming language Basic. It includes most of the standard 
  767. Basic commands and functions, but supplements them with a large number of 
  768. commands and functions that are specific to database management.
  769. The database commands duplicate the controls that Superbase Professional
  770. provides through its menus and dialogs. This means that almost all of
  771. Superbase's file and record handling facilities are available under program
  772. control. In fact, apart from Fast Forwards, Rewind and Duplicate, you can now
  773. carry out any Superbase operation using a single program command.
  774. Once you have familiarized yourself with Superbase's controls,the corresponding 
  775. program, you may find the idea of learning a program language daunting. But as 
  776. far as DML is concerned, a little goes long way,and you do not need to be fully 
  777. conversant with the language in order to take advantage of it. In effect, you 
  778. are already following a program sequence every time you perform a task which 
  779. involves a series of menu operations. Writing a program that performs the 
  780. task for you is simply a matter of entering commands in the same sequence. 
  781. Generally, you will be able to find a single command to duplicate each of 
  782. the menu operations.
  783. As you acquire more expertise, you can move on, building bigger and more 
  784. complex programs by combining routines, until you have fully automated your 
  785. database system. When you're ready, you can incorporate Superbase forms into 
  786. your programs, taking advantage of their built-in facilities for generating 
  787. and retrieving records in several files at once.
  788. At the highest level, you can specify your own pull-down menus, replacing the
  789. standard Superbase menus with the options that are relevant to the job in hand. 
  790. And you can customize your application to an even more detailed level by 
  791. creating your own pop-up selection panels to guide the user's choices.
  792.  
  793. USING THIS GUIDE
  794. Before reading this guide, you will need to be familiar with Superbase's menu
  795. and keyboard controls. Many of DML's commands provide a program equivalent of 
  796. a menu or keyboard option, and the descriptions given here presume that you
  797. already know how to use the corresponding option. However, once you have 
  798. mastered Superbase itself, you do not need to read this book all the way 
  799. through. As a reference guide, it can be consulted as and when it is needed.
  800.  
  801.             CHAPTER 2 - OVERVIEW
  802.  
  803. OPERATING MODES
  804. DML has two modes of operation:direct mode and program mode.
  805.  
  806. DIRECT MODE
  807. In this mode, DML executes instructions as soon as you have typed them in. 
  808. First you need to select the Command option from the Program Menu. Then enter 
  809. your instructions - a single command or a line of commands separated by colons 
  810. - in the command line window;when you select 'OK' or press the Return key, DML 
  811. will carry out the instructions straight away. The command line window is 64 
  812. characters long but you can enter up to 255 characters and move within the 
  813. window using the cursor keys.
  814.  
  815. PROGRAM MODE
  816. In program mode, DML does not execute commands as you enter them. Instead they 
  817. are stored in memory and executed only when the program is run. The main
  818. difference between this mode and direct mode is that with the latter you can
  819. only enter and execute one line at time;program mode allows you to enter a
  820. series of instruction lines which are carried out in sequence. Program lines
  821. can be up to 255 characters long.
  822.  
  823. OTHER DML APPLICATIONS
  824. DML's functions, along with its operators and variables, can also be used in
  825. other Superbase operations - such as field definition validations and
  826. calculations, filter conditions, update commands and query derived field
  827. definitions.
  828.  
  829. KEYWORDS AND RESERVED WORDS
  830. Any word that DML recognises as a specific instruction, or part of an
  831. instruction, is known as a keyword. A keyword cannot be used as a 
  832. variable name,  a field name,  or a label. In this context, keywords 
  833. are also knows as reserved words - DML reserves them for its own use, 
  834. and will interpret then as such even if they are in lower case. A 
  835. reserved word can, however, from part of a name. For example,  you 
  836. can incorporate the reserved word TO in any of the following ways:
  837. TOP:        (in a label)
  838. TOTAL%        (a numeric variable)
  839. tot$        (in a string variable)
  840. TOTALS$        (in a field name)
  841.  
  842. But you cannot use it like this:
  843. TO:
  844. TO%
  845. TO$
  846.  
  847. COMMANDS AND STATEMENTS
  848. Some programming manuals make a strict division between two kinds of 
  849. executable instructions - commands and statements. Commands are those 
  850. instructions which are generally executed in direct mode, while statements 
  851. are instructions that can only appear in a program line.
  852. In DML there are only a few instructions that cannot be used in both 
  853. operating modes and so the two terms are used almost interchangeably. 
  854. Thus we refer to a line with more than one instuction on it as a multi-
  855. statement line; but it could equally well be called a multi-command line.
  856.  
  857. VARIABLES
  858. There are three types of variables in DML:string ve menu(or menus)on. You 
  859. also use MENU to specify a numeric variable which will return a value showing 
  860. which item, if any, has been selected. Column must be a numeric expression 
  861. with a value in the range 1 to 10 giving the column number for the menu. To 
  862. set up a menu in the first column on the left at the same position as the 
  863. Superbase Project menu, you would enter a value of one. item must be a 
  864. numeric expression with a value in the range 0 to 12, giving the number of 
  865. the menu item. Item 0 is the menu heading, the text that appears on the menu 
  866. bar. State can take a value of 0, 1 or 2.0 disables the item so that it appears
  867. on the menu as a ghosted option.1 enables it, 2 places a check mark against it.
  868. strexpr supplies the text for the item. For example, if you wished to define a 
  869. menu in the first column which contained the option Deposits, you could enter:
  870.     MENU 1, 3, 1, "Deposits"
  871. This would make Deposits the third item in the menu list. To disable the
  872. Deposits option, you would enter:
  873.     MENU 1, 3, 0
  874. Note that you do not need to specify the text a second time.
  875.  
  876. EXAMPLES
  877. 1    MENU 1, 0, 1, "Transactions"
  878.     MENU 1, 1, 1, "Deposits"
  879.     MENU 1, 2, 1, "Withdrawal"
  880.     MENU 1, 3, 1, "Direct debit"
  881.     MENU 1, 4, 1, "Standing orders"
  882.     MENU 1, 5, 1, "Credit card"
  883.     MENU ON a%, b%
  884.  
  885. NOTES
  886. This example defines a menu in the first column with five options(items), all 
  887. of them enabled.(The heading for the menu is Transactions.) MENU ON then 
  888. turns the menu on. When the user selects an item, Superbase will place 
  889. its column and item numbers in the variables a% and b%.
  890.  
  891. MENU CLEAR
  892. PURPOSE
  893. Turns off all user-defined menus and clears their definitions from memory.
  894.  
  895. SYNTAX
  896. MEMORY CLEAR
  897.  
  898. COMMENTS
  899. If you want to define a new set of menus, you can use this command to clear 
  900. any menus which have been defined previously. You may also use it when your 
  901. menus are no longer required, in order to make the memory space they occupy 
  902. available for other purposes.
  903.  
  904. MENU ON
  905. PURPOSE
  906. Turns user-defined menus on and specifies the variables which return the 
  907.     result of efault 
  908.     New Line sequence is CHR$(13) CHR$(10) (carriage return,  line 
  909.     feed). The CHR$(13) may be suppressed,  for example to achieve 
  910.     compatibility with the ED editor,  by setting RETURN=OFF in 
  911.     the Tool Types list of the Superbase icon,  which may be 
  912.     modified using the Workbench Info option.
  913.  
  914. *   GET and WAIT (1). Control characters can be returned in GET 
  915.     and WAIT statements. If these are saved in a file which is 
  916.     subsequently LISTed,  they will generate the "File contains 
  917.     non-text characters" error. Note also that CONTROL-C,  the 
  918.     standard interrupt key,  does not stop program execution if 
  919.     returned in GET or WAIT. It is up to the program to detect 
  920.     the value and act appropriately.
  921.  
  922. *   GET and WAIT (2). WAIT makes the window active before it 
  923.     starts waiting for input,  so if the window becomes inactive 
  924.     for any reason you cannot reactivate it. If this is a problem 
  925.     for your application,  use GET instead; however,  you will not 
  926.     be able to input into any other window,  such as a CLI window,  
  927.     because GET continually reactivates the Superbase window.
  928.  
  929. *   The CLEAR statement must be placed last on a program line.
  930.  
  931. *   You may want to convert Superbase text files (`.sbt' files) 
  932.     to ASCII files. The technique for doing this is:
  933.  
  934.      1. Rename the `.sbt' file,  giving it a different extension. 
  935.         E.g.,  rename `Merge.sbt' as `Merge.asc'.  
  936.      
  937.      2. Load the file into the Text Editor. Its name will not 
  938.         appear in the list peration.
  939. Although Merge is the program equivalent of the Mail Merge option on the
  940. Process menu, it does not allow you to preview letters on screen before 
  941. printing them. To do this, use ? TEXT with the MERGE parameter.
  942.  
  943. EXAMPLES
  944. 1    OPEN FILE "Address"
  945.     MERGE TEXT "Mailshot1" WHERE Country LIKE "USA"
  946.  
  947. MID$
  948. PURPOSE
  949. Returns one or more characters from within a text string or text field.
  950.  
  951. SYNTAX
  952. MID$(strexpr, nexpr1[, nexpr2])
  953.  
  954. COMMENTS
  955. MID$ is more flexible than LEFT$ and RIGHT$ as it can extract characters from
  956. any point in a string.strexpr holds the string, and nexpr1 gives the starting
  957. point in the string.nexpr2 specifies the length of the substring to be
  958. extracted; if nexpr2 is not given, MID$ takes all the characters from the
  959. starting point to the end.
  960.  
  961. EXAMPLES
  962. 1    textfieldc=MID$(textfielda, 10, 10)
  963. 2    textfieldc=LCASE$(MID$(textfielda, 8))
  964. 3    MID$(textfielda, 12, 1)LIKE[a-c]
  965. 4    x$-MID$(textfieldc, 19, 2)
  966. 5    x$=(x$, 4)
  967. 6    ? MID$(x$, 4, 2)
  968. 7    ASK;A$:
  969.     I%=LEN(A$)
  970.     FOR n%=I% TO 1 STEP -1
  971.     B$=B$ + MID$(A$, n%, 1)
  972.     NEXT
  973.     ? B$
  974.  
  975. NOTES
  976. Example 7 inputs a word into A$ and turns it back to front.
  977.  
  978. MINS
  979. PURPOSE
  980. Extracts the number of minutes from a numeric value which holds the time in
  981. thousandths of a second.
  982.  
  983. SYNTAX
  984. MINS(nexpr)
  985.  
  986. COMMENTS
  987. Usually, nexpr will be a timefield or the result of a TIMEVAL calculation.
  988.  
  989. EXAMPLES
  990. 1    mnts%=MINS(timefield)
  991. 2    ? MINS(NOW - start%);"minutes have elapsed"
  992.  
  993. MOD
  994. PURPOSE
  995. Gives the remainder of a numeric expression after it has been divided.
  996.  
  997. SYNTAX
  998. nexpr1 MOD nexpr2
  999.  
  1000. COMMENTS
  1001. nexpr1 is the number to be divided, nexpr2 is the number that divides into it
  1002. (the divisor). MOD returns the remainder when nexpr1 has been divided by
  1003. nexpr2. For example:
  1004.     14 MOD 3
  1005. gives 2 as a result. It is equivalent to:
  1006.     14-INT(14/3) * 3
  1007.  
  1008. EXAMPLES
  1009. 1    ?(2.53 * 100) MOD 100
  1010.  
  1011. NOTES
  1012. The example line strips off the integer part of a number and displays the 
  1013. first two figures after the decimal place.
  1014.  
  1015. MODIFY
  1016. PURPOSE
  1017. Modifies a field definition.
  1018.  
  1019. SYNTAX
  1020. MODIFY field[, ] [field definition string] [, formula] [, formula]
  1021.  
  1022. COMMENTS
  1023. MODIFY is the program equivalent of the EDIT FILE option in PROJECT. It 
  1024. allows you to alter a field's parameters;for example, the field name or 
  1025. its length.
  1026. The field definition and formula strings take the same form as they do with 
  1027. the ADD command.
  1028.  
  1029. EXAMPLES
  1030. 1    MODIFY Forename "Firstname;TXT REQ IXU;15 U;1, 12"
  1031.  
  1032. MONTH$
  1033. PURPOSE
  1034. Takes a julian date number and returns the month of the year as a text string.
  1035.  
  1036. SYNTAX
  1037. MONTH$(nexpr)
  1038.  
  1039. COMMENTS
  1040. The same limitations on which julian dates are acceptable apply to this
  1041. function as they do to other date functions.
  1042. The format of the text string is the full month name regardless of what 
  1043. current date format is - i.e., January, not Jan).
  1044. Associated date functions are DAY DAYS DAY$ MONTH MONTH$ YEAR.
  1045.  
  1046. EXAMPLES
  1047. 1    textfieldc=MONTHS$(datefielda)
  1048. 2    textfieldc=MONTH$(datefielda + 90)
  1049. 3    textfieldc=MONTH$(TODAY)
  1050. 4    x$=MONTH$(datefielda + VAL(textfielda))
  1051. 5    x$=MONTH$(DAYS ("11 Jan 85")
  1052. 6    ? MONTH$(datefielda + 30)
  1053.  
  1054. NEW
  1055. PURPOSE
  1056. Clears the program area or text area.
  1057.  
  1058. SYNTAX
  1059. NEW [TEXT/QUERY/UPDATE]
  1060.  
  1061. COMMENTS
  1062. On its own, NEW erases any program that is currently in the computer's memory.
  1063. When followed by TEXT, it clears the current text editor area of memory.
  1064. Following it by or QUERY or UPDATE, clears their respective dialogs.
  1065. Unlike the menu options Program New(and Text New)this command does not put you 
  1066. into the program(or text)editor.
  1067.  
  1068. NEWLINE
  1069. PURPOSE
  1070. Sends a new line character(or characters)to an output device.
  1071.  
  1072. SYNTAX
  1073. NEWLINE[nexp]
  1074.  
  1075. COMMENTS
  1076. This command prints a new line at the current output device;i.e. with the
  1077. screen display, it takes the cursor onto the start of the next line.nexp 
  1078. can be used to specify more than one new line.
  1079. If nexp is not an integer, only the integer part will be taken.
  1080.  
  1081. EXAMPLES
  1082. 1    NEWLINE 2
  1083. 2    FOR i%=1 to 20
  1084.     ? i%:if i% MOD 5=0 THEN NEWLINE i%/5
  1085.     NEXT i%
  1086.  
  1087. NOTES
  1088. Example 2 outputs the numbers 1 to 5 with single line spacing, 6 to 10 with
  1089. double spacing, and so on up to 20.
  1090.  
  1091. NOW
  1092. PURPOSE
  1093. Gives the system time.
  1094.  
  1095. SYNTAX
  1096. NOW
  1097.  
  1098. COMMENTS
  1099. NOW shows the time of day in hours and minutes, using the current time format.
  1100. If you have a real-time clock in your computer or you have set the system time,
  1101. this will be the current time.
  1102. Note that NOW actually holds the time in thousandths of a second. When you
  1103. display the time, Superbase automatically translates it into hours and minutes.
  1104.  
  1105. EXAMPLES
  1106. 1    ? NOW
  1107. 2    ? MINS(NOW)
  1108. 3    timefield=NOW
  1109.  
  1110. NUMBASE
  1111. PURPOSE
  1112. Sets the numeric format in which numbers are displayed.
  1113.  
  1114. SYNTAX
  1115. NUMBASE string
  1116.  
  1117. COMMENTS
  1118. NUMBASE is the program equivalent of the Number Format option in the SET menu.
  1119. string must be one of Superbase's valid numeric formats, as listed Chapter 2, 
  1120. Volume 1. For example, "z99999.00" or "z(+$, 000000.00".
  1121.  
  1122. EXAMPLES
  1123. 1    NUMBASE "z99999."
  1124. Integer only format.
  1125. 2    NUMBASE "+*****.00"
  1126. Numbers displayed with a sign and leading cheque-protect.
  1127.  
  1128. ON ERROR
  1129. PURPOSE
  1130. Tells DML to branch to another part of the program when an error occurs.
  1131.  
  1132. SYNTAX 
  1133. ON ERROR [[GOTO]label]
  1134.  
  1135. COMMENTS
  1136. Normally, DML halts program execution and displays an error message when it
  1137. detects an error. ON ERROR enables error trapping, and prevents the program 
  1138. from halting. Once an error has been detected, it causes the program to jump 
  1139. to the error handling routine specified with label.
  1140. You can use ERRNO in your error handling routine to check on which error has
  1141. occurred, and take appropriate action. In many cases, you will want the program
  1142. to resume execution after detecting an error. You can do this with the RESUME 
  1143. statement.
  1144.  
  1145. To disable error trapping, use ON ERROR without a following label.
  1146.  
  1147. EXAMPLES
  1148. 1    ON ERROR GOTO check
  1149.     ......
  1150.     ......
  1151.     ......
  1152.     check:IF ERRNO 11 THEN
  1153.     RESUME
  1154.     ELSE? "Are you sure you want to exit from this program?"
  1155.     ? "Press Y to exit, any another key to resume"
  1156.     WAIT a$
  1157.     IF a$="Y" OR a$="y" THEN END ELSE RESUME
  1158.     ENDIF
  1159.  
  1160. NOTES
  1161. In this example, ON ERROR is used to check whether the Stop button has been
  1162. clicked on or CTRL C has been pressed. Both these events generate error number 
  1163. 11, so the error handling routine(which starts at label 'check')first tests 
  1164. for this error number. If it finds that another error event has occurred, 
  1165. program execution is resumed at the line which caused the error. The error 
  1166. handling routine then asks if the user wishes to exit or not. Depending on 
  1167. the answer it receives, it either resumes execution at the line which caused 
  1168. the error (the line being executed when the user pressed STOP or CTRL C)or 
  1169. terminates the program.
  1170.  
  1171. ON GOSUB
  1172. PURPOSE
  1173. Calls one of a number of subroutines from a list of subroutines.
  1174.  
  1175. SYNTAX
  1176. ON nexp GOSUB label1 [, label2, label3, ...]
  1177.  
  1178. COMMENTS
  1179. This statement transfers program control to one of the subroutines given 
  1180. in the list. The value of nexp determines which subroutine the program 
  1181. jumps to. If nexp has valued at 1 the program branches to the subroutine 
  1182. at the first label, if nexp has a value of 2, it branches to the subroutine 
  1183. at the second label, and so on.
  1184. Once the program has branched to a subroutine, it executes each statement in
  1185. turn until it meets a RETURN statement. Then it jumps back to the line
  1186. following the ON GOSUB statement.
  1187. Any label can be repeated.
  1188. If nexp is 0 or greater than the number of supplied labels, program control
  1189. drops to the next statement after the ON GOSUB statement.
  1190.  
  1191. EXAMPLES
  1192. 1    ON x% GOSUB lab1, lab2, lab3
  1193. 2    ON x% GOSUB lab1, lab2, lab1, lab2, lab1
  1194.  
  1195. ON GOTO
  1196. PURPOSE
  1197. Branches to one of a list of labels.
  1198.  
  1199. SYNTAX
  1200. ON nexp GOTO label [, label, ....]
  1201.  
  1202. COMMENTS
  1203. This command transfers program control to one of the program lines given in the 
  1204. list. The value of nexp determines which label the program jumps to.
  1205. If nexp has valued at 1 the program branches to the first label, if nexp has a 
  1206. value of 2, it branches to the second label, and so on. For a general 
  1207. description of GOTO refer to GOTO itself.
  1208. nexp should be a positive integer. If it is not an integer, the whole number
  1209. part will be taken.
  1210. Any label can be repeated.
  1211. If nexp is 0 or greater than the number of supplied labels, program control
  1212. drops to the next statement after ON GOTO.
  1213.  
  1214. EXAMPLES
  1215. 1    ON x% GOTO lab1, lab2, lab3
  1216. 2    ON x% GOTO lab1, lab2, lab1, lab2, lab1
  1217.     ? "Reached here only when x% is 0 or greater than 5
  1218.  
  1219. OPEN
  1220. PURPOSE
  1221. Opens a text file on disk or Comms channel for input/output.
  1222.  
  1223. SYNTAX
  1224. OPEN filename FOR[INPUT/OUTPUT/APPEND]
  1225.  
  1226. COMMENTS
  1227. When used for output to a file, OPEN has the same effect as OUTPUT TO file.
  1228. There is only one channel for INPUT, and one for OUTPUT, so you cannot have 
  1229. two output channels, or two input channels. However, you can have one of each 
  1230. open at the same time.
  1231. APPEND is an output channel and specifies that file is to be appended to. You
  1232. must not try to specify OPEN "aaa" FOR OUTPUT APPEND.
  1233. If using OPEN, file is overwritten without warning.
  1234. If using APPEND, file need not exist.
  1235. If using INPUT, file must exist.
  1236.  
  1237. EXAMPLES
  1238. 1    OPEN "aaa" FOR OUTPUT
  1239. 2    OPEN "aaa" FOR APPEND
  1240. 3    OPEN "bbb" FOR INPUT:OPEN "aaa" APPEND
  1241.     lab1:INPUT LINE a$:? a$
  1242.     IF NOT EOF ("*")THEN GOTO lab1
  1243.     CLOSE INPUT:CLOSE OUTPUT
  1244.  
  1245. NOTES
  1246. Example 3 appends the contents of file 'bbb' to file 'aaa'. Notice that the
  1247. last line of the program CLOSEs the files that OPEN has opened. This practise
  1248. is strongly recommended:you should always close a file when you have finished
  1249. writing to it.
  1250.  
  1251. OPEN FORM
  1252. PURPOSE
  1253. Loads a form from disk and displays it in the database window.
  1254.  
  1255. SYNTAX
  1256. OPEN FORM form
  1257.  
  1258. COMMENTS
  1259. form must be a string expression giving the file name of a form. Superbase 
  1260. will also open any database files associated with the form.
  1261.  
  1262. EXAMPLES
  1263. 1    OPEN FORM "Invoice"
  1264.  
  1265. OPEN FIELDS
  1266. PURPOSE
  1267. Specifies which fields are displayed.
  1268.  
  1269. SYNTAX
  1270. OPEN FIELDS [FILE sbfname] fieldlist
  1271. COMMENTS
  1272. This command is the program equivalent of the Open Fields option on the Project
  1273. Menu. fieldlist consists of the list of fields required to be open. To remove 
  1274. any restrictions on which fields are shown, use the CLOSE FIELDS command.
  1275.  
  1276. EXAMPLES
  1277. 1    OPEN FIELDS FILE "Address" Firstname, Lastname, Country, City
  1278.  
  1279. OPEN FILE
  1280. PURPOSE
  1281. Opens a database file and its default index.
  1282.  
  1283. SYNTAX
  1284. OPEN FILE sbfname [;password]
  1285.  
  1286. COMMENTS
  1287. Note the distinction between OPEN FILE "aaa" which opens a database file, and
  1288. OPEN "aaa"(FOR INPUT)which opens a text file.
  1289. sbfname is compulsory, and if a password is required to access the file, then 
  1290. it is also compulsory (use a semicolon to separate the filename from the 
  1291. password).
  1292. INDEX followed by a field name may be added to the end of an OPEN FILE command,
  1293. allowing you to select an index other than the default index. But it can only 
  1294. be used if the file has already been opened by a direct command or an earlier 
  1295. program line. As explained in the entry for the INDEX command, DML parses the 
  1296. whole line before executing it;so if you refer to a field, it must be a field 
  1297. in a file that already been opened. Otherwise an error will result.
  1298.  
  1299. EXAMPLES
  1300. 1    OPEN FILE "aaa"
  1301. 2    x$="bbb":OPEN FILE x$
  1302. 3     OPEN FILE "aaa";"John"
  1303.  
  1304. NOTES
  1305. In example 3, 'John' is the password for the file 'aaa'.
  1306.  
  1307. ORDER
  1308. PURPOSE
  1309. Sets the order for Query output.
  1310.  
  1311. SYNTAX
  1312. ORDER [&nexpr]field[ASCENDING/DESCENDING] [, field]
  1313.                 ASCENDING/DESCENDING] [, .....]
  1314.  
  1315. COMMENTS
  1316. ORDER is a Query Language command and can only be entered in a query section 
  1317. -i.e., it works in conjunction with the Query Language command Select.
  1318. This command is the program equivalent of the Order command line in the query
  1319. definition dialog: it takes the same syntax and serves the same purpose. The
  1320. field specified with the ORDER command determines the order in which the field 
  1321. in the SELECT line are output. If you are familiar with the concept of sorting,
  1322. you can think of ORDER as setting the sort 'key' for query output.
  1323. field must be a field in an open file, but it does not need to be an indexed
  1324. field; nor does it have to be one of the fields in the SELECT line.
  1325. ASCENDING and DESCENDING allow you to specify whether data is sorted in
  1326. ascending or descending order. If you specify a text field with the ORDER
  1327. command - i.e., if you specify it as the sort key-Supervase outputs record data
  1328. according to the alphabetical order of the sort field. DESCENDING reverses the 
  1329. order and sorts the field from Z to A.
  1330. With numeric, date and time fields, ASCENDING sorts data in numeric, date or 
  1331. time order; and DESCENDING reverses the order.
  1332. By default, fields are sorted in ascending order;so it not strickly necessary 
  1333. to include the ASCENDING parameter.
  1334. You can also specify more than one field in the ORDER line, separating each 
  1335. with a comma. If enter two fields, the first field takes precedence as a sort 
  1336. key over the second field; i.e., records are first sorted according to the 
  1337. first field, and then any duplicate data items are sorted according to the 
  1338. second key.
  1339. The same applies if there are more than two fields:the second key has priority 
  1340. over the third, the third has over the fourth, and so on.
  1341.  
  1342. EXAMPLES
  1343. The examples illustrate how ORDER works by taking a limited set of records and 
  1344. showing some of the different ways in which they may be sorted. Each record 
  1345. contains data from three fields, Firstname, Lastname, and Country.
  1346.  
  1347. 1    SELECT Firstname, Lastname, Country
  1348.     ORDER Lastname
  1349. This examples takes Lastname as the sort key and produces the following output:
  1350.  
  1351. FIRSTNAME        LASTNAME        COUNTRY
  1352. Pierre            Arnauld            France
  1353. William            Carter            USA
  1354. Gerde            Hemrich            West Germany
  1355. John            Miles            England
  1356. Anne            Richardson        USA
  1357. Peter            Smith            England
  1358. Robert            Brown            England
  1359.  
  1360. 2    SELECT Firstname, Lastname, Country
  1361.     ORDER Country
  1362. The output from this query would be as follows:
  1363.  
  1364. FIRSTNAME        LASTNAME        COUNTRY
  1365. Robert            Brown            England
  1366. John            Miles            England
  1367. Peter            Smith            England
  1368. Pierre            Arnauld            France
  1369. William            Carter            USA
  1370. Anne            Richardson        USA
  1371. Gerde            Hemrich            West Germany
  1372.  
  1373.                     5-107
  1374.  
  1375. 3    SELECT Firstname, Lastname
  1376.     ORDER Country DESCENDING, Lastname ASCENDING
  1377. The output from this query is:
  1378.  
  1379. FIRSTNAME        LASTNAME
  1380. Gerde            Hemrich
  1381. William            Carter
  1382. Anne            Richardson
  1383. Pierre            Arnauld
  1384. Robert            Brown
  1385. John            Miles
  1386. Peter            Smith
  1387.  
  1388. 4    SELECT Firstname, Lastname, Country
  1389.     ORDER Country, Firstname
  1390. This example uses Country as the primary sort key and Firstname as the
  1391. secondary key to produce the following output:
  1392.  
  1393. FIRSTNAME        LASTNAME        COUNTRY
  1394. John            Miles            England
  1395. Peter            Smith            England
  1396. Robert            Brown            England
  1397. Pierre            Arnauld            France
  1398. Anne            Richardson        USA
  1399. William            Carter            USA
  1400. Gerde            Hemrich            West Germany
  1401.  
  1402. NOTES
  1403. The default length for sorting is 15 characters per field. Superbase gives
  1404. equal weighting to upper case, lower case and accented instances of characters.
  1405. The & character followed by a value up to the length of the field may precede
  1406. any field, specifying the number of characters that will be used in sorting.
  1407.  
  1408. OUTPUT TO
  1409. PURPOSE
  1410. Opens a text file on disk for output.
  1411.  
  1412. SYNTAX
  1413. OUTPUT TO filename
  1414.  
  1415. COMMENTS
  1416. This command makes the disk the current output device and sends any future
  1417. output to filename. It has the same effect as OPEN filename FOR OUTPUT.
  1418. If the text file already exists on disk, any output command issued after 
  1419. OUTPUT TO, will overwrite the file. If you want to add data to an existing 
  1420. text file, use OPEN filename FOR APPEND.
  1421.  
  1422. EXAMPLES
  1423. 1    OUTPUT TO "Names"
  1424.     ? Lastname
  1425.     CLOSE OUTPUT
  1426. 2    OUTPUT TO a$
  1427.  
  1428. NOTES Example 1 stores the contents of the Lastname field(in the current
  1429. record)on disk in the text file Names.
  1430.  
  1431. PASSWORD
  1432. PURPOSE
  1433. Sets new password(or none)for a specified file.
  1434.  
  1435. SYNTAX
  1436. PASSWORD sbfname [;passwords]
  1437.  
  1438. COMMENTS
  1439. sbfname must be an open file and, as usual with filenames, must be included 
  1440. in quotation marks.
  1441. If no password is given, the existing password for the specified file is
  1442. removed.
  1443.  
  1444. EXAMPLES
  1445. 1    OPEN FILE "aaa;John"
  1446.     PASSWORD "aaa"
  1447. Removes passwords.
  1448. 2    PASSWORD "aaa;Rosebud"
  1449. Sets a password for the file 'aaa'.
  1450. 3    OPEN FILE "aaa;John"
  1451.     PASSWORD "aaa;John;Paul;George"
  1452. Adds passwords for read/write and read only access privileges.
  1453.  
  1454. PCOL
  1455. PURPOSE
  1456. Return the column position of the print head on the current output printer or
  1457. resets the print head's position.
  1458.  
  1459. SYNTAX
  1460. PCOL(nexpr)
  1461.  
  1462. COMMENTS
  1463. If nexpr is zero, the function returns the column position of the print head
  1464. on the current printer. For the Row position, see PROW. See also LOCATE.
  1465. You can also use this function to set the counter Superbase uses to keep track
  1466. of the print head's position. Giving nexpr a positive value, sets the counter 
  1467. to that value. The print head itself is not moved. This feature is used to 
  1468. reset the internal count after issuing a series of printer commands which have 
  1469. not in fact moved the print head, for example, after switching to high density 
  1470. graphics mode.
  1471.  
  1472. EXAMPLES
  1473. 1    x%=PCOL(0)
  1474. 2    ? PCOL(0)
  1475.  
  1476. POSITION
  1477. PURPOSE
  1478. Sets the data pointer to a new position in an ASCII file.
  1479.  
  1480. SYNTAX
  1481. POSITION nexp
  1482.  
  1483. COMMENTS
  1484. When you read data from an ASCII file on disk, Superbase uses an internal
  1485. pointer to keep track of it. The OPEN file FOR INPUT command sets the pointer
  1486. to zero, the position of the first character in the file. Thereafter it is
  1487. incremented by one for each character that is input using the INPUT command.
  1488. POSITION sets the pointer to the character position specified by nexpr.
  1489. Normally, the data in an ASCII file is read into the computer sequentially. 
  1490. With Position, you can input character data on a more selective basis.
  1491. You will only be able to take advantage of this command if you know where the
  1492. data is stored in a file. Superbase stores data in variable length fields(as
  1493. opposed to fixed length fields):when you create an ASCII file from an '.sbf'
  1494. file by exporting it, the amount of space occupied on disk by field data may
  1495. vary from record to record. This means that there is no simple way of knowing
  1496. the position of any particular field or record.
  1497. One solution to this problem is to create an ASCII file from a database file
  1498. using the query option Output to Disk. When you do this, Superbase stores
  1499. the data in fixed length fields-each field takes the length set in the file
  1500. definition. You can then work out the number of characters occupied by a 
  1501. record in the ASCII and use this figure to retrieve specific records or fields.
  1502. For example, if the record length was 49 characters, you would enter:
  1503.     POSITION 49 * 5 + 1:INPUT LINE a$
  1504. to retrieve the fifth record in the file(you need to add one because the first 
  1505. character position is zero).
  1506.  
  1507. EXAMPLES
  1508. 1    OPEN "Cust.asc" FOR INPUT
  1509.     FOR n%=0 to 76 * 12 STEP 77
  1510.     POSITION n%
  1511.     INPUT & 15, a$
  1512.     ? a$
  1513.     NEXT
  1514.     CLOSE INPUT
  1515.  
  1516. NOTES
  1517. This example inputs the first field from the first twelve records in the 
  1518. ASCII file Cust.asc. It assumes that the record length is 77 characters 
  1519. and that the length of the first field is 15 characters.
  1520.  
  1521. PRINT
  1522. PURPOSE
  1523. Sends information to the printer.
  1524.  
  1525. SYNTAX
  1526. PRINT[expressionlist]
  1527.  
  1528. COMMENT
  1529. PRINT, followed by a semicolon and nothing else, selects the printer as the
  1530. current output device. The ? command can then be used to send information to
  1531. the printer. You can also use PRINT to output information directly to the
  1532. printer, by following the command with one or more expressions. But note that
  1533. any use of PRINT makes the printer the current output device.
  1534. The items in the expression list following the Print command may be separated
  1535. by a semicolon or a comma. If a semicolon is used, Superbase will print the
  1536. expressions one after the another without any spaces in between; a comma has 
  1537. the effect of inserting a space between items. In some circumstances, you may 
  1538. also dispense with separators altogether. Thus, provided it can distinguish 
  1539. between different items, Superbase will accept a list of expressions which 
  1540. are entered on the line head to tail; for example:
  1541.     PRINT a$b$c%"Hello"
  1542.  
  1543. EXAMPLES
  1544. 1    PRINT;
  1545.     ? MEMORY
  1546.     DISPLAY;
  1547. 2    PRINT BF "The items in the following list will be printed in bold face"
  1548.     PRINT "One", "Two", "Three";CHR$(12)
  1549.     DISPLAY;
  1550.  
  1551. NOTES
  1552. The first example prints the current program's variables and their contents.
  1553. Example 2 prints a list of items, and then sends the form feed character -
  1554. CHR$(12)-to the printer. Both examples use the DISPLAY command to make the
  1555. screen the current output device after the print operation is finished.
  1556.  
  1557. PROTECT
  1558. PURPOSE
  1559. Saves the current program in an encrypted form.
  1560.  
  1561. SYNTAX
  1562. PROTECT filename
  1563.  
  1564. COMMENTS
  1565. Use this command to ensure that program files are not seen by anyone else. It
  1566. stores a file on disk in an encrypted(scrambled)form so that it can be run but 
  1567. not edited.
  1568. If the first line of a program is a REM statement, PROTECT displays that line, 
  1569. but hides the rest of the program from any attempt to edit or LIST it.
  1570.  
  1571. EXAMPLES
  1572. 1    PROTECT "myprog"
  1573.  
  1574. PROW
  1575. PURPOSE
  1576. Returns the row position of the print head on the current output printer.
  1577.  
  1578. SYNTAX
  1579. PROW(nexpr)
  1580.  
  1581. COMMENTS
  1582. If nexpr is zero, the function returns the row position of the print head on 
  1583. the current printer. For the Column position, see PCOL. See also LOCATE.
  1584. Giving nexpr a positive value resets Superbase's internal row counter. See
  1585. PCOL.
  1586.  
  1587. EXAMPLES
  1588. 1    x%=PROW(0)
  1589. 2    ? PROW(0)
  1590.  
  1591. QUIT
  1592. PURPOSE
  1593. Exits from Superbase.
  1594.  
  1595. SYNTAX
  1596. QUIT
  1597.  
  1598. COMMENTS
  1599. This has same effect as selecting the Quit option from the Project menu. It
  1600. exits from Superbase and returns the user to the desktop interface.
  1601.  
  1602. READ
  1603. PURPOSE
  1604. Reads the data given in a DATA statement and assigns it to a variable or field.
  1605.  
  1606. SYNTAX
  1607. READ var/field[, var/field] [, .....]
  1608.  
  1609. COMMENT
  1610. The types of variables or fields used with a READ command must match the 
  1611. types of data expected-numeric variables or numeric fields for numeric data 
  1612. and string variables or string fields for string data.
  1613. DML uses a pointer to keep track of where it is in the list of DATA items; 
  1614. that is, each time a data item is read, DML moves the pointer on to the next 
  1615. item in the list. If you wish to read the same data again, you can place a 
  1616. label in front of a DATA statement and use RESTORE.
  1617.  
  1618. EXAMPLES
  1619. 1    READ a%, b$, fielda.filea, fielda.fileb
  1620.  
  1621. RECCOUNT
  1622. PURPOSE
  1623. Counts the number of records in a file.
  1624.  
  1625. SYNTAX
  1626. RECCOUNT(sbfname)
  1627.  
  1628. COMMENTS
  1629. This function returns a number showing how many records there are in the file
  1630. specified. You can use the empty string as an argument-RECCOUNT("")-to refer to
  1631. the current file.
  1632.  
  1633. EXAMPLES
  1634. 1    ? RECCOUNT("Orders")
  1635.  
  1636.                 5-116
  1637.  
  1638. 2    x%=RECCOUNT(x$)
  1639. 3    OPEN FILE("address")
  1640.     SELECT FIRST
  1641.     FOR n%=1 to RECCOUNT("address")
  1642.     VIEW
  1643.     SELECT NEXT
  1644.     NEXT n%
  1645.  
  1646. NOTES
  1647. Example 3 displays all the records in the file "address" in turn.
  1648.  
  1649. REM
  1650. PURPOSE
  1651. Inserts a non-executable comment(a remark)into a program.
  1652.  
  1653. SYNTAX
  1654. REM[text]
  1655.  
  1656. COMMENTS
  1657. REM has the effect of cancelling any statements after it. This makes it useful 
  1658. when you are testing a program-placing it at the start of a multi-statement line
  1659. puts the following statements temporarily out of action. More generally,use 
  1660. REM to annotate a program in order to explain how it works or what it does.
  1661. A single quotation mark after a command without an intervening colon also acts 
  1662. as a REM statement.
  1663.  
  1664. EXAMPLES
  1665. 1    REM this is a remark
  1666. 2    ....:FILE "aaa" open aaa
  1667. 3    ....:FILE "aaa":REM open aaa
  1668. 4    FILE "aaa":REM eliminate next commands:INDEX abc:SELECT 
  1669.     FIRST
  1670.  
  1671.  
  1672. NOTES
  1673. Examples 2 and 3 have identical effects and demonstrate the two different 
  1674. ways of entering a comment. In example 4, the REM statement means that the 
  1675. INDEX and SELECT FIRST commands are not executed.
  1676.  
  1677. REMOVE FILE
  1678. PURPOSE
  1679. Removes a database file from disk, along with its associated definition and
  1680. index files.
  1681.  
  1682. SYNTAX
  1683. REMOVE sbfname
  1684.  
  1685. COMMENT
  1686. This command operates in the same way as the Remove File menu option.
  1687. Note that you are not asked for confirmation-the file is just removed.
  1688.  
  1689. EXAMPLES
  1690. 1    REMOVE FILE "aaa"
  1691. 2    REMOVE FILE "DF1:aaa"
  1692. 3    REMOVE FILE "GEM\SBASE\aaa"
  1693.  
  1694. REMOVE FROM
  1695. PURPOSE
  1696. Removes records which match the conditions specified.
  1697.  
  1698. SYNTAX
  1699. REMOVE FROM FILE sbfname[WHERE conditions]
  1700.  
  1701. COMMENTS
  1702. This command works in the same way as the equivalent PROJECT-REMOVE-FILE menu
  1703. option. It deletes records from a file on disk.
  1704. FILE sbfname has to be open, and if  the  file requires a password, you must 
  1705. have  full access to it.
  1706. WHERE conditions is optional and is set up in the same way as a filter. If it
  1707. is not included, the command acts on all the records in a file.
  1708.  
  1709. EXAMPLES
  1710. 1    REMOVE FROM FILE "aaa" WHERE Lastname LIKE "[a-c]*"
  1711. 2    REMOVE FROM FILE "aaa"
  1712. This empties the file of all its data.
  1713.  
  1714. REMOVE INDEX
  1715. PURPOSE
  1716. Removes an index on the current file from disk.
  1717.  
  1718. SYNTAX
  1719. REMOVE INDEX index
  1720.  
  1721. COMMENT
  1722. This command works in the same way as the Remove Index option on the Project
  1723. menu. The file must be open, and, if it requires a password, you must have full
  1724. access privileges.
  1725. index is the name of an indexed field. It can be entered with a file extention.
  1726.  
  1727. EXAMPLES
  1728. 1    REMOVE fielda
  1729. 2    REMOVE fieldb.aaa
  1730.  
  1731. RENAME
  1732. PURPOSE
  1733. Renames a file on disk.
  1734.  
  1735. SYNTAX
  1736. RENAME old.filename[, /TO]new.filename
  1737.  
  1738. COMMENT
  1739. This command works in the same way as the RENAME command in MS DOS or Amiga
  1740. DOS, but allows you to rename a file without exiting from Superbase. You have
  1741. the option of using either a comma or the keyword TO as the separator between
  1742. the two file names.
  1743.  
  1744. EXAMPLES
  1745. 1    RENAME "aaa", "bbb"
  1746. 2    RENAME "aaa" TO "bbb"
  1747.  
  1748. REORGANIZE
  1749. PURPOSE
  1750. Reorganizes the current file or a specified file.
  1751.  
  1752. SYNTAX
  1753. REORGANIZE [FILE sbfname] [TO]sbfnameb
  1754.  
  1755. COMMENTS
  1756. This command is the program equivalent of the Reorganize option on the System
  1757. menu(see Chapter 8, Volume 1). It takes a file on disk, reorganizes it, and 
  1758. stores it as sbfnameb.IF the FILE option is not used, the current file is 
  1759. reorganized.
  1760. sbfnameb can include the pathname for another directory or disk. If you enter a 
  1761. pathname without a file name following it,the file will be reorganized under the 
  1762. same name.
  1763. Note that you cannot reorganize a file under the same name in the same
  1764. directory;i.e. if a pathname is not supplied, sbfnameb must not be the same as 
  1765. sbfnamea.
  1766.  
  1767. EXAMPLES
  1768. 1    FILE "aaa":REORGANIZE TO "copy"
  1769. 2    REORGANIZE "aaa" TO "a:mydir\"
  1770. 3    REORGANIZE "aaa" TO "DF1:Mydir/"
  1771. Example 1 creates a reorganized file  'copy' in the current directory, Example 2
  1772. creates a reorganized file 'aaa' in directory  mydir  on the disk in drive a (or, 
  1773. in example 3, drive DF1 on the Amiga).
  1774.  
  1775. REPLICATE
  1776. PURPOSE
  1777. Replicates a character a given number of times.
  1778.  
  1779. SYNTAX
  1780. REPLICATE(strexp, nexp)
  1781.  
  1782. COMMENTS
  1783. REPLICATE repeats the character in strexpr the number of times given in nexp.
  1784.  
  1785. EXAMPLES
  1786. 1    textfieldc=REPLICATE("*", 10)
  1787. 2    x$=REPLICATE(textfieldc, 4)
  1788. 3    x$=REPLICATE(MID$(x$, 4, 2), 6)
  1789. 4    x$=REPLICATE (" ", 25)
  1790.  
  1791. NOTES
  1792. Example 4 fills x$ with 25 spaces, but see function SPACE$.
  1793.  
  1794. REPORT
  1795. PURPOSE
  1796. Specifies the field or fields on  which totals(and other report statistics) will 
  1797. be produced for the report as a whole.
  1798.  
  1799. SYNTAX
  1800. REPORT [SUMMARIZE] [params]fieldname[, fieldname][, ....]
  1801.  
  1802. COMMENT
  1803. Report has two uses. When you create a Report with the Forms Editor, Superbase 
  1804. generates a Report statement by noting the fields which have been specified in 
  1805. an AFTER REPORT section;i.e., if the AFTER REPORT section in a Report program 
  1806. contains the statements:
  1807.      ? SUM amount
  1808.      ? COUNT deposits
  1809. Superbase will generate the following line in the program:
  1810.      REPORT amount, deposits
  1811. If you are writing a Report program yourself (as opposed to modifying a program 
  1812. generated by  Superbase), you should remember to enter a Report statement 
  1813. including the names of any fields for which you wish totals and other report 
  1814. statistics to appear.
  1815. The second application for REPORT is a query language command. In this context, 
  1816. it allows you to create a program line which is equivalent to the REPORT command 
  1817. line in the query definition dialog.
  1818. REPORT is used here to specify the fields for which totals and other
  1819. statistical.
  1820. When you use the SUMMARIZE option,  Superbase  suppresses  the main detail of the 
  1821. report and prints just the summary information.
  1822.  
  1823. REQUEST
  1824. PURPOSE
  1825. Displays a Superbase dialog.
  1826.  
  1827. SYNTAX
  1828. REQUEST text1, text2, type[, nvar[, strvar[, len]]]
  1829.  
  1830. COMMENT
  1831. REQUEST allows you to select one of Superbase's dialogs and display it on
  1832. screen. To some extent you can also customise a dialog to your own
  1833. requirements. Thus you can place a title in box, and you can specify the text
  1834. string that initially appears in the dialog's command line or selection box.
  1835. For certain dialogs, it also possible to specify the length of the box.
  1836. text 1 and text2 are the first and second line of the dialog title. They must
  1837. be included although they can be "". The maximum length for each line is 50
  1838. characters.
  1839. type is the dialog type. It defines the type of dialog according to the table
  1840. shown below.
  1841. nvar is a numeric variable. It returns a value of 1 if OK is selected and there 
  1842. is an entry into the string dialog. If CANCEL is selected or there is no entry 
  1843. into the string dialog, it returns 0.
  1844. strvar can be used with dialogs which have a string entry box and has two
  1845. functions:
  1846. It is used to place a default value into the string box, i.e.,the text string in 
  1847. strvar is entered into the string box when the dialog is displayed.
  1848. It returns the string which the user enters in the box.
  1849. len specifies the length of the string box(where appropriate). This is
  1850. particularly useful for the information dialogs. For dialog types 5-16 it is
  1851. not need as Superbase sets the box to the maximum file name length of 50
  1852. characters. For dialog type 4 len must be specified.
  1853. Œ
  1854. Types of Dialogs available:
  1855.  
  1856. TYPE    DIALOG            BUTTONS
  1857. 0    string            OK
  1858. 1    string            OK CANCEL
  1859. 2    string            OK
  1860. 3    string            OK CANCEL
  1861. 4    string            OK CLEAR CANCEL
  1862. 5    Database Files        OK CLEAR CANCEL
  1863. 6    Open Fields List    OK CLEAR CANCEL
  1864. 7    Indexed fields        OK CLEAR CANCEL
  1865. 8    Non indexed fields    OK CLEAR CANCEL
  1866. 9    Field Info        OK CLEAR CANCEL 
  1867. 10    Open Database Files    OK CLEAR CANCEL
  1868. 11    Database Files        OK CLEAR CANCEL
  1869. 12    Program Files        OK CLEAR CANCEL
  1870. 13    Text Files        OK CLEAR CANCEL
  1871. 14    Query Files        OK CLEAR CANCEL
  1872. 15    Update Files        OK CLEAR CANCEL
  1873. 16    Function Key Files    OK CLEAR CANCEL
  1874. 17    Directory listing    OK CLEAR CANCEL
  1875. 18    Subdirectory List    OK CLEAR CANCEL
  1876.  
  1877. Note that a database file must be open before dialogs 5 to 9 can be selected.
  1878.  
  1879. EXAMPLES
  1880. 1    REQUEST "", "", 2, 
  1881. 2    a%=0:a$="":REM initialize nvar and strvar
  1882.     REQUEST "Select a program", "", 5, a%, a$, 32
  1883.     IF a%=0 THEN ? "OK so you do not want to run a program":END
  1884.     CHAIN a$
  1885. 3    a%=0:a$=":OPEN FILE "aaa"
  1886.     REQUEST "Select an Index", "", 7, a%, a$
  1887.     IF a%=0 THEN END
  1888.     INDEX a$
  1889.     lablook:a$="":REQUEST "Enter a key", "", 1, a%, a$, 15
  1890.     IF a%=0 THEN END
  1891.     SELECT KEY a$
  1892.     IF FOUND ("aaa") THEN GOTO lablook2
  1893.     REQUEST "No Record with key" + a$, "See Nearest ?", 1a%
  1894.     IF a%=0 THEN GOTO lablook
  1895.     lablook2:VIEW:WAIT FOR 5:GOTO lablook
  1896.  
  1897. NOTES
  1898. Example 1 puts an "OK" dialog up for 2 seconds. Example 2 allows the user to
  1899. select a program to run. Example 3 in essence duplicates the key lookup
  1900. function from the ? button on the Superbase Control Panel. Note the
  1901. concatenation of the first title line of the dialog on the third from last
  1902. line.
  1903.  
  1904. RESTORE
  1905. PURPOSE
  1906. Moves the data pointer back to the first DATA statement, or to a specified
  1907. label.
  1908.  
  1909. SYNTAX
  1910. RESTORE[label]
  1911.  
  1912. COMMENTS
  1913. The data pointer is the internal pointer that Superbase uses to keep track of
  1914. which DATA statements have been read. Initially it has a value of zero and
  1915. points to the first DATA statement. As you READ data into variables or fields, 
  1916. the d the box. len specifies the length of the string box(where appropriate). 
  1917. This is particularly useful for the information dialogs. For dialog types 5-16 
  1918. it is not need as Superbase sets the box to the maximum file name length of 50
  1919. characters. For dialog type 4 len must be specified.
  1920.  
  1921. Types of Dialogs available:
  1922.  
  1923. TYPE    DIALOG            BUTTONS
  1924. 0    string            OK
  1925. 1    string            OK CANCEL
  1926. 2    string            OK
  1927. 3    string            OK CANCEL
  1928. 4    string            OK CLEAR CANCEL
  1929. 5    Database Files        OK CLEAR CANCEL
  1930. 6    Open Fields List    OK CLEAR CANCEL
  1931. 7    Indexed fields        OK CLEAR CANCEL
  1932. 8    Non indexed fields    OK CLEAR CANCEL
  1933. 9    Field Info        OK CLEAR CANCEL 
  1934. 10    Open Database Files    OK CLEAR CANCEL
  1935. 11    Database Files        OK CLEAR CANCEL
  1936. 12    Program Files        OK CLEAR CANCEL
  1937. 13    Text Files        OK CLEAR CANCEL
  1938. 14    Query Files        OK CLEAR CANCEL
  1939. 15    Update Files        OK CLEAR CANCEL
  1940. 16    Function Key Files    OK CLEAR CANCEL
  1941. 17    Directory listing    OK CLEAR CANCEL
  1942. 18    Subdirectory List    OK CLEAR CANCEL
  1943.  
  1944. Note that a database file must be open before dialogs 5 to 9 can be selected.
  1945.  
  1946. EXAMPLES
  1947. 1    REQUEST "", "", 2, 
  1948. 2    a%=0:a$="":REM initialize nvar and strvar
  1949.     REQUEST "Select a program", "", 5, a%, a$, 32
  1950.     IF a%=0 THEN ? "OK so you do not want to run a program":END
  1951.     CHAIN a$
  1952. 3    a%=0:a$=":OPEN FILE "aaa"
  1953.     REQUEST "Select an Index", "", 7, a%, a$
  1954.     IF a%=0 THEN END
  1955.     INDEX a$
  1956.     lablook:a$="":REQUEST "Enter a key", "", 1, a%, a$, 15
  1957.     IF a%=0 THEN END
  1958.     SELECT KEY a$
  1959.     IF FOUND ("aaa") THEN GOTO lablook2
  1960.     REQUEST "No Record with key" + a$, "See Nearest ?", 1a%
  1961.     IF a%=0 THEN GOTO lablook
  1962.     lablook2:VIEW:WAIT FOR 5:GOTO lablook
  1963.  
  1964. NOTES
  1965. Example 1 puts an "OK" dialog up for 2 seconds. Example 2 allows the user to
  1966. select a program to run. Example 3 in essence duplicates the key lookup
  1967. function from the ? button on the Superbase Control Panel. Note the
  1968. concatenation of the first title line of the dialog on the third from last
  1969. line.
  1970.  
  1971. RESTORE
  1972. PURPOSE
  1973. Moves the data pointer back to the first DATA statement, or to a specified
  1974. label.
  1975.  
  1976. SYNTAX
  1977. RESTORE[label]
  1978.  
  1979. COMMENTS
  1980. The data pointer is the internal pointer that Superbase uses to keep track of
  1981. which DATA statements have been read. Initially it has a value of zero and
  1982. points to the first DATA statement. As you READ data into variables or fields, 
  1983. the data pointer is increased by one for every data item read.
  1984. This command resets the data pointer. If you do not specify label, the data
  1985. pointer is reset to the beginning of the first DATA statement. If you specify
  1986. label, the data pointer is reset to the data statement following the label.
  1987.  
  1988. EXAMPLES
  1989. 1    RESTORE
  1990. 2    RESTORE datalabel1
  1991.  
  1992. RESUME
  1993. PURPOSE
  1994. Resumes execution after an error.
  1995.  
  1996. SYNTAX
  1997. RESUME[NEXT/label]
  1998.  
  1999. COMMENTS
  2000. The RESUME command works in conjunction with the ON ERROR GOTO command which 
  2001. is used to trap program errors.
  2002. RESUME, on its own, returns program control to the statement that caused the
  2003. error. When NEXT is included, the statement returns program control to the
  2004. statement after the one which caused the error.
  2005. label transfers program control to the label specified.
  2006.  
  2007. EXAMPLES
  2008. 1    REM Top of program
  2009.     ON ERROR GOTO errlab1
  2010.     SELECT FIRST:? fieldname
  2011.     .....
  2012.     .....
  2013.     errlab1:IF ERRNO=44 THEN OPEN FILE "aaa":REM file not open
  2014.     RESUME
  2015. 2    REM read data
  2016.     ON ERROR GOTO errlab2
  2017.     .....
  2018.     READ x$
  2019.     .....
  2020.     endread:.....
  2021.     .....
  2022.     .....
  2023.     errlab2:IF ERRNO=18 THEN RESUME endread:REM out of data
  2024.  
  2025. RETURN
  2026. PURPOSE
  2027. Returns from a subroutine.
  2028.  
  2029. SYNTAX
  2030. RETURN
  2031.  
  2032. COMMENTS
  2033. The RETURN command is used to mark the end of a subroutine. It instructs the
  2034. computer to transfer prgram control to the statement immediately following the 
  2035. GOSUB or ON GOSUB statement which initially called the subroutine. See GOSUB.
  2036.  
  2037. RIGHT$
  2038. PURPOSE
  2039. Extracts one or more characters from a text string or text field, starting from 
  2040. the right-hand end of the string.
  2041.  
  2042. SYNTAX
  2043. RIGHT$(strexpr, nexpr)
  2044.  
  2045. COMMENTS
  2046. This function starts at the right of a string given in strexpr and extracts
  2047. nexpr characters.
  2048.  
  2049. EXAMPLES
  2050. 1    textfieldc=RIGHT$(textfielda, 10)
  2051. 2    textfieldc=LCASE$(RIGHT$(textfielda, 1))
  2052. 3    IF RIGHT$(textfielda, 1)="s" THEN....
  2053. 4    x$=RIGHT$("ABCD", 2)
  2054. 5    x$=RIGHT$(x$, 4)
  2055.  
  2056. RND
  2057. PURPOSE
  2058. Returns a random number.
  2059.  
  2060. SYNTAX
  2061. RND(nexpr)
  2062.  
  2063. COMMENTS
  2064. What the function returns depends on the value of nexpr.
  2065. It nexpr is less than zero, the random number generator is reseeded. This 
  2066. means that a new series of random numbers will be generated, completely 
  2067. unrelated to the last series. It also allows you to generate the same series 
  2068. again for testing purposes, by entering the same seed.
  2069. If nexpr is zero, the number returned is the same as the previous one.
  2070. If nexpr is positive, a new random number is generated.
  2071. The random number returned is in the range 0 to 1. Technically, it is never 
  2072. zero and never unity, but all values between 0 and one will be randomly 
  2073. generated and the distribution of numbers will be relatively flat.
  2074.  
  2075. EXAMPLES
  2076. 1    numfieldc=RND(numfielda)
  2077. 2    numfieldc=RND(2) * 12
  2078. 3    textfieldc=MID$(x$, RND(2) * 6 + 1, RND(2) * 12 + 1)
  2079. 4    $x=RND($y)
  2080. 5    ? RND($x)
  2081.  
  2082. ROW
  2083. PURPOSE
  2084. Returns the row position of the cursor on the screen.
  2085.  
  2086. SYNTAX
  2087. ROW(0)
  2088.  
  2089. COMMENTS
  2090. This function shows how far down the screen the cursor is. For the column
  2091. position, see COL.
  2092.  
  2093. EXAMPLES
  2094. 1    x%=ROW(0)
  2095. 2    ? ROW(0)
  2096.  
  2097. NOTES
  2098. In practise, example 2 would be pointless, because it changes the position of
  2099. the cursor in the course of printing it.
  2100.  
  2101. RUN
  2102. PURPOSE
  2103. Executes a program from memory, or loads it from disk and then runs it.
  2104.  
  2105. SYNTAX
  2106. RUN[filename]
  2107.  
  2108. COMMENTS
  2109. This will run the program currently in memory when used as a command or as a
  2110. program statement without the filename option. If filename is used to specify 
  2111. a program, Superbase loads the program from disk and then runs it.
  2112. If filename is specified, it must be a string variable or a string constant 
  2113. in quotation marks.
  2114.  
  2115. SAVE
  2116. PURPOSE
  2117. Saves any of the following types of file:program, text, function key, query, 
  2118. and update files.
  2119.  
  2120. SYNTAX
  2121. SAVE [TEXT/KEY/QUERY/UPDATE]filename[, TEXT]
  2122.  
  2123. COMMENTS
  2124. filename is required. Superbase detects files of different types as follows:
  2125.     aaa.sbk is a saved function key set
  2126.     aaa.sbp is a saved program
  2127.     aaa.sbq is a saved query
  2128.     aaa.sbt is a saved document(text)
  2129.     aaa.sbu is a saved update
  2130. If none of the options TEXT, KEY, QUERY or UPDATE is used, Superbase assumes 
  2131. that filename refers to an '.sbp' file and attempt to save a program file. If 
  2132. you include TEXT as the last parameter, DML saves a program file as a text file.
  2133. Only one of the options, TEXT, KEY, QUERY or UPDATE, can be used at a time.
  2134.  
  2135. SAVE FILE
  2136. PURPOSE
  2137. Saves the current file definition.
  2138.  
  2139. SYNTAX
  2140. SAVE FILE sbfname
  2141.  
  2142. COMMENTS
  2143. When you create a new file, you can use MAKE to save the file definition. 
  2144. SAVE FILE, however, must be used after you have edited a file definition 
  2145. with MODIFY.
  2146.  
  2147. SAY
  2148. PURPOSE
  2149. Converts a text string into speech, using the Amiga's speech synthesis facility.
  2150.  
  2151. SYNTAX
  2152. SAY [USING parameters]exprlist
  2153.  
  2154. COMMENTS
  2155. SAY is only available on the Amiga. The parameters for the USING option are in 
  2156. this order:
  2157.     Pitch, Inflection, Rate(wpm), Sex, Phonemic
  2158. The following table gives the range of each parameter and its default value:
  2159.  
  2160. PARAMETER    RANGE        DEFAULT        NOTES
  2161. Pitch        65-320        110
  2162. Inflection    0-1        0        0 is expressive, 1 is monotone
  2163. Rate in wpm    40-400        150
  2164. Sex        0-10        0        0 is male, 1 is female
  2165. Phonemic    0-1        0        0 translates to phonemes, 
  2166.                             1 assumes phonemes
  2167.  
  2168. SAY only works with string expressions. To hear an external sound field use 
  2169. the SHOW command.
  2170.  
  2171. EXAMPLES
  2172. 1    OPEN FILE "Address"
  2173.     SELECT FIRST
  2174.     WHILE NOT EOF("Address")
  2175.     SAY Forename;Lastname;"comes from";City;Country
  2176.     SELECT NEXT
  2177.     WEND
  2178. 2    SAY USING 280, 1, 200, 1, 0"Hello there", USING 140, 1, 200, 0, 0
  2179.     "Well, hello there"
  2180.  
  2181. SCRDUMP
  2182. PURPOSE
  2183. Outputs a copy of the screen to the printer-carries out a screen dump.
  2184.  
  2185. SYNTAX
  2186. SCRDUMP
  2187.  
  2188. COMMENTS
  2189. Only available on the Amiga.
  2190.  
  2191. SECS
  2192. PURPOSE
  2193. Returns the numbers of seconds from a time field.
  2194.  
  2195. SYNTAX
  2196. SECS(nexpr)
  2197.  
  2198. COMMENTS
  2199. nexpr will usually contain a time in milliseconds(thousandths of a second)
  2200. from a time field or from the result of a TIMEVAL calculation.
  2201.  
  2202. EXAMPLES
  2203. 1    scnds%=SECS(timefield)
  2204. 2    scnds%=SECS(TIMEVAL("10:22AM"))
  2205.  
  2206. SELECT COMMANDS
  2207. The following SELECT commands relate to Record selection:
  2208.     SELECT CURRENT
  2209.     SELECT DUPLICATE
  2210.     SELECT FIRST
  2211.     SELECT KEY
  2212.     SELECT LAST
  2213.     SELECT NEXT
  2214.     SELECT PREVIOUS
  2215.     SELECT REMOVE
  2216.     SELECT WHERE
  2217.  
  2218. SELECT commands can only be used on an open database file, although this does
  2219. not have to be the current file.
  2220. These commands do not display records on screen. To do this, you need to use
  2221. VIEW. Similarly, although they can be used with any open file, the SELECT
  2222. commands do not automatically make an open file the current file.
  2223. For example, SELECT LAST selects the last record in a file(on index)even if 
  2224. the file is not current. If the file is current, executing the VIEW command 
  2225. will be enough to display the last record. But with any other open file, you 
  2226. will also need to use the FILE command(as opposed to the FILE parameter)before 
  2227. you can display the record(FILE makes an open file the current file).
  2228.  
  2229. SELECT CURRENT
  2230. PURPOSE
  2231. Selects the current record.
  2232.  
  2233. SYNTAX
  2234. SELECT CURRENT [FILE sbfname] [INDEX index]
  2235.  
  2236. COMMENT
  2237. This command has the same effect as the Current Record button on the Control
  2238. Panel at the bottom of the screen. Use INDEX to select the current record using 
  2239. a different index.
  2240.  
  2241. SELECT DUPLICATE
  2242. PURPOSE
  2243. Selects the next record with the same key.
  2244.  
  2245. SYNTAX
  2246. SELECT DUPLICATE [INDEX index]
  2247.  
  2248. COMMENTS
  2249. This command finds the next record with the same key as the current key. The
  2250. key is the field on which the file is currently indexed. If SELECT DUPLICATE
  2251. fails to find a record with the same key, the EOF function is set to true.
  2252.  
  2253. 1    SELECT FIRST:VIEW:x%=1
  2254.     lab1:SELECT DUPLICATE
  2255.     IF NOT EOF("aaa")THEN VIEW:x%=x% + 1:GOTO lab1
  2256.     ? "End of ";x%; "duplicates-strike key"
  2257.     lab2:SELECT PREVIOUS:SELECT NEXT:IF EOF("aaa")THEN END
  2258.     CLS:VIEW:GOTO lab1
  2259. Example 1 displays duplicate entries on an index. In Table view, it shows a 
  2260. set of records at a time.
  2261.  
  2262. SELECT FIRST
  2263. PURPOSE
  2264. Selects the first record in the current or specified index sequence.
  2265.  
  2266. SYNTAX
  2267. SELECT[FILE sbfname] [INDEX index]
  2268.  
  2269. COMMENTS
  2270. This command has the same effect as the First Record button on the Control
  2271. Panel. Use the INDEX parameter to alter the current index.
  2272.  
  2273. EXAMPLES
  2274. 1    SELECT FIRST
  2275. 2    SELECT FIRST "Stock" INDEX Prodcode
  2276.  
  2277. NOTES
  2278. Example 1 selects the first record in the current file according to the 
  2279. current index. Example 2 selects the first record in the Stock file 
  2280. according to the Procode index.
  2281.  
  2282. SELECT KEY
  2283. PURPOSE
  2284. Selects the first record with matching string.
  2285.  
  2286. SYNTAX
  2287. SELECT KEY string [FILE sbfname] [INDEX index]
  2288.  
  2289. COMMENTS
  2290. This command has the same effect as the Key Lookup button on the Control Panel.
  2291. It searches the file for the first record whose index field matches the string 
  2292. specified.
  2293. Unlike the other SELECT commands, this command does not affect the EOF 
  2294. function, but instead sets the FOUND Function(see the example given for 
  2295. FOUND).
  2296.  
  2297. EXAMPLES
  2298. 1    SELECT KEY "Zollinger"
  2299.     VIEW
  2300. 2    SELECT KEY "Johnson" FILE "Customer" INDEX Lastname
  2301.     IF FOUND("Customer")THEN FILE "Customer":VIEW
  2302.  
  2303. NOTES
  2304. Example 1 selects the record in the current file whose Lastname field contains 
  2305. the name Zollinger. It assumes that the current file is indexed on Lastname.
  2306. The program in example 2 selects the record in the Customer file whose 
  2307. Lastname field contains the name Johnson. The Customer file must have already 
  2308. been opened, but it does not have to be the current file. If the program finds 
  2309. a record with a matching key, it uses the FILE command to make the Customer 
  2310. file current and then displays the record.
  2311.  
  2312. SELECT LAST
  2313. PURPOSE
  2314. Selects the last record in the current or specified index sequence.
  2315.  
  2316. SYNTAX
  2317. SELECT [FILE sbfname] [INDEX index]
  2318.  
  2319. COMMENTS
  2320. Has the same effect as the Last Record button on the Control Panel.
  2321.  
  2322. SELECT NEXT
  2323. PURPOSE
  2324. Selects the next record in the current or specified index sequence.
  2325.  
  2326. SYNTAX
  2327. SELECT NEXT [FILE sbfname] [INDEX index]
  2328.  
  2329. COMMENT
  2330. Has the same effect as the Next Record button on the Control Panel.
  2331.  
  2332. SELECT PREVIOUS
  2333. PURPOSE
  2334. Selects the previous record in the current or specified index sequence.
  2335.  
  2336. SYNTAX
  2337. [FILE sbfname] [INDEX index]
  2338.  
  2339. COMMENTS
  2340. This command has the same effect as the Previous button on the Control Panel.
  2341.  
  2342. SELECT REMOVE
  2343. PURPOSE
  2344. Removes the current record in the current file or another open file.
  2345.  
  2346. SYNTAX
  2347. SELECT [FILE sbfname]
  2348.  
  2349. COMMENTS
  2350. This command has the same effect as the Remove option on the Record menu.
  2351.  
  2352. SELECT WHERE
  2353. PURPOSE
  2354. Selects first record that matches the filter conditions or removes the filter.
  2355.  
  2356. SYNTAX
  2357. SELECT WHERE[[FILE sbfname] [conditions]]
  2358.  
  2359. COMMENTS
  2360. This command has the same effect as the Filter button on the Control Panel.
  2361. conditions is set up in the same way as the string gadget in the Filter
  2362. requestor. If not specified, the current filter conditions are cleared.
  2363. SELECT WHERE can only be used to set a single file filter. If you enter the
  2364. name of a field which also occurs in another open file, you should include 
  2365. the file the file name as an extension. Otherwise, Superbase may assume you 
  2366. are attempting to use this command in a multi-file operation, and will issue 
  2367. the error message:
  2368.     Can't do this
  2369.     This Where statement must be single file
  2370. If you wish to set a multi-file filter - to select records whose field data
  2371. matches the data in another file - use the LOOKUP function or the query
  2372. language command WHERE.
  2373.  
  2374. EXAMPLE
  2375. 1    SELECT WHERE fielda LIKE "[a-c]"
  2376. 2    SELECT WHERE "Stock" fieldb LIKE "[a-c]"
  2377. 3    SELECT WHERE
  2378.  
  2379. NOTES
  2380. Once set, the Control Panel filters remains active until it is cleared. 
  2381. Example 3 clears the filter which may have been set by a previous SELECT 
  2382. WHERE command or by direct entry in the filter dialog.
  2383.  
  2384. QUERY LANGUAGE COMMANDS
  2385. DML's Query Language commans allow you to create a program which duplicates a
  2386. Superbase query. These commands are used in report programs created by the
  2387. Forms Editor; but they can also be used for any of the query applications
  2388. described in Chapter 11, Volume 1 - sorting records, creating complex multi-
  2389. file filters, merging files, and so on.
  2390. In Superbase a query is defined by the four command lines in the query
  2391. definition dialog(Chapter 5, Volume 1, introduces this dialog;Chapter 11 
  2392. explains it in more detail). These command lines can be reproduced in a 
  2393. program by using the query language commands. SELECT is used to define the 
  2394. Fields command line;
  2395. REPORT defines the Report command line;WHERE corresponds to the FILTER line; 
  2396. and ORDER is used for the Order line.
  2397. You will find a explanation of these commands under their respective keyword
  2398. entries. Here, we will describe how they work together to form a query section.
  2399. A query section must start with the SELECT command and it should end with END
  2400. SELECT. Any other query language commands are optional;you will include them
  2401. according to your requirements. Thus, if you wish to use a filter, you will
  2402. include a WHERE command within the query section.
  2403. Likewise, if you wish to use reporting functions such as SUM and COUNT, you 
  2404. will need to insert a REPORT command after the SELECT command and before END 
  2405. SELECT. You can think of REPORT, WHERE and ORDER as modifying the query output 
  2406. which is specified with the SELECT command. When SELECT is used on its own - 
  2407. to form a single line query section - it outputs data from each record in a 
  2408. specified file(or files)in turn. For example:
  2409.     SELECT Lastname.Address, Country.Address:
  2410.     END SELECT
  2411. This outputs a line showing the contents of the fields Lastname and Country 
  2412. for each of the records in the Address file. As such, SELECT works in the same 
  2413. way as the ? command except that it acts on all the records in a file.
  2414. If you inserted TO PRINTER after Country.Address in the example above, SELECT
  2415. would output data to the printer. The TO device parameter provides an
  2416. equivalent to the Output options in the query definition dialog. You can use 
  2417. to specify an output device other than the screen:the printer, an ASCII file, 
  2418. or a new '.sbf' file.
  2419.  
  2420. A QUERY LANGUAGE EXAMPLE
  2421. Any query created with the query definition dialog can be reproduced under
  2422. program control. We can illustrate this by converting a query file(an '.sbq'
  2423. file)into a program, taking the Deptran file supplied with the demonstration
  2424. file disk as an example.
  2425. Deptran can be displayed on screen using the LIST option from the System menu.
  2426. It looks like this:
  2427.     SB
  2428.     CLIENTS
  2429.     DEPOSITS
  2430.     Deposit Transaction Report
  2431.     ON "Clients" Firstname.Clients, Lastname.Clients, ON "Deposits"
  2432.     @24 Bank, Amount, Deposits
  2433.     REPORT SUM Amount COUNT GROUP Lastname.Clients SUM
  2434.     Amount
  2435.     Lastname.Clients=Lastname.Deposits
  2436.     Lastname.Clients
  2437. SB on the first line indicates that this is a Superbase Professional query 
  2438. file as opposed to one created in Superbase Personal. The next two lines 
  2439. contain the names of the database files which are associated with this query. 
  2440. 'Deposit Transaction Report' is the query title, and the remaining lines 
  2441. represent the four query command lines.
  2442. Before we can load this file into the Program Editor, we need to change 
  2443. its name to Deptran.sbp. To do this, select COPY from the System menu and, 
  2444. after selecting Deptran.sbq as the file to be copied, enter then name 
  2445. Deptran.sbp.
  2446. You can now load the file into the Program Editor using the Program open
  2447. option. Coverting it to a program is just a matter of deleting two lines and
  2448. inserting keywords in the others. Once you have made these changes, the 
  2449. program should look like this:
  2450.     OPEN FILES "CLIENTS"
  2451.     OPEN FILE "DEPOSITS"
  2452.     SELECT ON "Clients" Firstname.Clients, Lastname.Clients, ON
  2453.     "Deposits" @24 Bank, Amount, Deposits
  2454.     REPORT SUM Amount COUNT GROUP Lastname.Clients SUM
  2455.     Amount
  2456.     WHERE Lastname.Clients=Lastname.Deposits
  2457.     ORDER Lastname.Clients
  2458. Note that the report line is the same as in the query file and does not need
  2459. to be altered. If you now run this program, it will have the same effect as
  2460. running Deptran from the query definition dialog(by clicking on OK).
  2461.  
  2462. SELECT
  2463. PURPOSE
  2464. Specifies which are to be output from a query.
  2465.  
  2466. SYNTAX
  2467. SELECT [params]firlds[TO device]:[statements]:END SELECT
  2468.  
  2469. COMMENTS
  2470. SELECT is a Query Language command and can used on its own or with other Query
  2471. Language commands to form a query section. fields can be one or more field 
  2472. names from one or multiple files.params can be any of the output format 
  2473. parameters as listed in the section which describes the ? commands.
  2474. In addition, there are three format parameters which can only be used with 
  2475. the SELECT command:ON file, AS heading and FIELD. The syntax and function 
  2476. of these parameters in described in their respective sections in Chapter 11, 
  2477. Volume 1.
  2478. TO device specifies the device to which the query output will be sent. If it 
  2479. is not included output is to the screen. The device options are:
  2480.     TO PRINTER
  2481. Outputs to the printer.
  2482.     TO FILE file
  2483. Creates a new '.sbf' file on disk under the file name specified, using the query
  2484. output.
  2485.     TO file
  2486. Outputs to the ASCII file on disk specified by file.
  2487. statements can be other query language statements formed with the commands
  2488. REPORT, WHERE, and ORDER.
  2489. END SELECT is used to indicate the end of a query section. It is not always
  2490. necessary to include END SELECT, but you must provide Superbase with some
  2491. indication of where the query section finishes and where the rest of the
  2492. program starts. Otherwise, the statements following the last line in the query 
  2493. section will be interpreted as part of a multi-line SELECT statement. As an 
  2494. alternative to END SELECT, you could use a blank line.
  2495.  
  2496. SER
  2497. PURPOSE
  2498. Returns the total number of records that have been created in a file.
  2499.  
  2500. SYNTAX
  2501. SER(filename)
  2502.  
  2503. COMMENTS
  2504. You can use the SER function to assign a serial number to each record in a
  2505. file. To do this, you need to define a field which will hold the serial number.
  2506. It should be defined as a constant field and should have SER("filename")as its
  2507. constant formula. When you create the first record, it will be given the value 
  2508. 1. This value will then be incremented by one for each record you add to the 
  2509. file.
  2510. The difference between SER and RECCOUNT is that SER gives the total number of
  2511. records that have been created, irrespective of whether they have been deleted 
  2512. later. RECCOUNT returns the number of records currently in the file.
  2513.  
  2514. 1    ? SER("Stock")
  2515. 2    BLANK
  2516.     Recno.Stock=SER("STOCK")
  2517.     Price.Stock=14.95
  2518.     Description.Stock="Widget"
  2519.     STORE
  2520.  
  2521. SET
  2522. PURPOSE
  2523. Reads a text file and executes any commands in the file, or assigns variables
  2524. from a text file.
  2525.  
  2526. SYNTAX
  2527. SET filename
  2528.  
  2529. COMMENTS
  2530. This command reads in a text file and executes it as if it were a sequence of
  2531. command. The file, therefore, must contain valid DML commands. If the file 
  2532. holds a set of variables-which have previously been saved to disk by ? MEMORY
  2533. -the variable assignments are executed. This provides a way of transferring 
  2534. variables between different programs when CHAIN is not appropriate. For 
  2535. example, Program 'a' can set up variables for Program 'c', but Program 'a' 
  2536. CHAINs to Program 'b'. Another application would be to communicate variables 
  2537. between different programs which are run on different days.
  2538.  
  2539.  
  2540. .
  2541.  
  2542. EXAMPLES
  2543. 1    ......
  2544.     process a
  2545.     ......
  2546.     OPEN "aaa" FOR OUTPUT:? MEMORY:CLOSE OUTPUT:DISPLAY
  2547.     another program
  2548.     SET "aaa"
  2549.     ......
  2550.     process b
  2551. 2    SET "abc"
  2552. 'abc' could be ASCII file which contains a set of function key assignments.
  2553.  
  2554. SET BUFFERS
  2555. PURPOSE
  2556. Sets the number of buffers Superbase uses as a disk cache.
  2557.  
  2558. SYNTAX
  2559. SET BUFFERS nexp
  2560.  
  2561. COMMENTS
  2562. Operates in the same way as the Buffers option in Set Menu Options, and
  2563. allocates 512 bytes memory space for each buffer.
  2564. nexp can have a value from 1 to 99.
  2565.  
  2566. EXAMPLES
  2567. 1    SET BUFFERS 24
  2568.  
  2569. SET PAGING
  2570. PURPOSE
  2571. Sets paging on or off.
  2572.  
  2573. SYNTAX
  2574. SET PAGING[ON/OFF]
  2575.  
  2576. COMMENTS
  2577. When used without ON/OFF, it acts as toggle and operates in the same way as the
  2578. SET-PAGING menu options. With ON or OFF, it sets paging accordingly.
  2579.  
  2580. EXAMPLES
  2581. 1    SET PAGING OFF
  2582.  
  2583. SET VIEW MODE
  2584. PURPOSE
  2585. Sets the view mode or switches between one of the view modes and a Form.
  2586.  
  2587. SYNTAX
  2588. SET [TABLE]/[FORM]/[RECORD]
  2589.  
  2590. COMMENTS
  2591. Works in the same way as the equivalent Set Menu option, except that it does 
  2592. not automatically display a record(use VIEW).
  2593. If a Form(as opposed to Form view)is displayed, the SET command switches the
  2594. Form off and selects the specified view mode. The Form remains in memory and
  2595. can be switched on again by repeating the SET command for the same view mode.
  2596. In other words, when a Form has been opened, the SET command toggles the 
  2597. current view mode on and off.
  2598.  
  2599. EXAMPLES
  2600. 1    SET FORM
  2601. 2    SET TABLE:VIEW
  2602.  
  2603. SGN
  2604. PURPOSE
  2605. Finds the sign of a number.
  2606.  
  2607. SYNTAX
  2608. SGN(nexpr)
  2609.  
  2610. COMMENTS
  2611. This function returns the positive value of 1 if nexpr is positive and returns
  2612. the negative value -1 if nexpr is negative.
  2613.  
  2614. EXAMPLES
  2615. 1    numfieldc=SGN(numfielda)
  2616. 2    IF SGN(datefielda-datefieldb)THEN GOTO lab1
  2617. 3    x%=SGN(y%)
  2618. 4    x%=SGN(y% * numfielda * (datefielda-datefieldb))
  2619. 5    x%=SGN(VAL(RIGHT$(textfielda, 5)))
  2620. 6    ? SGN(x%)
  2621.  
  2622. NOTES
  2623. Example 2 tests whether datefieldb is later than datefielda
  2624.  
  2625. SHOW
  2626. PURPOSE
  2627. Shows an external file.
  2628.  
  2629. SYNTAX
  2630. SHOW [field]/[strexpr]
  2631.  
  2632. COMMENTS
  2633. SHOW is the program equivalent of the camera button at the bottom of the
  2634. screen. It displays a picture or text from an external file.field must be a
  2635. field which holds the name of the external file, but it does not have to be a
  2636. field in the current file:if you add a file name extension to the field name, 
  2637. you can display pictures using other open database files.
  2638. As an alternative to specifying an external field, strexpr allows you to 
  2639. specify the name of an external file.
  2640. When field or strexpr is not given, SHOW removes the picture from the screen.
  2641.  
  2642. SIN
  2643. PURPOSE
  2644. Returns the sine of an angle measured in radians.
  2645.  
  2646. SYNTAX
  2647. SIN(nexpr)
  2648.  
  2649. COMMENTS
  2650. This function returns the sine of the angle in nexpr, where the angle is
  2651. measured in radians. To convert degrees to radians, multiply by 180/PI.
  2652.  
  2653. EXAMPLES
  2654. 1    numfieldc=SIN(numfielda)
  2655. 2    x%=SIN(y%)
  2656. 3    x%=SIN(VAL(x$))
  2657. 4    ? SIN(x%)
  2658.  
  2659. SPACE$
  2660. PURPOSE
  2661. Fills a string with a specified number of spaces.
  2662.  
  2663. SYNTAX
  2664. SPACE$(nexpr)
  2665.  
  2666. COMMENTS
  2667. nexpr must be in the range 0 to 255.
  2668.  
  2669. EXAMPLES
  2670. 1    textfieldc=SPACE$(10)
  2671. 2    x$=SPACE$(4)
  2672.  
  2673. SQR
  2674. PURPOSE
  2675. Returns the square root of a number
  2676.  
  2677. SYNTAX
  2678. SQR(nexpr)
  2679.  
  2680. COMMENTS
  2681. The function returns the square root of the number specified by nexpr. If 
  2682. nexpr is less than zero, the function returns the error message 'ivalid 
  2683. umber'.
  2684.  
  2685. EXAMPLES
  2686. 1    numfieldc=SQR(numfielda)
  2687. 2    numfieldc=SQR(2 * numfirlda)
  2688. 3    textfieldc=STR$(SQR(VAL(x$)))
  2689. 4    x%=SQR(y%)
  2690.  
  2691. STORE
  2692. PURPOSE
  2693. Stores the current record in the current file or in the file specified.
  2694.  
  2695. SYNTAX
  2696. STORE[, 0/1/2] [FILE sbfname]
  2697.  
  2698. COMMENTS
  2699. This command stores the record in memory for the current file, or for the 
  2700. file specified with sbfname.
  2701. It is equivalent to the Save option on the Record menu.
  2702.  
  2703. The numeric parameters - 0, 1 or 2 - allow you to specify whether the record
  2704. is stored in batch mode or in the normal way(see the section on Batch in 
  2705. Chapter 5, Volume 1).
  2706. STORE, 1 stores the current record in batch mode. The time taken to save the
  2707. record on disk will be reduced, but the data will not yet be secure:if you
  2708. suffer a power loss, you will lose any record data which has been saved(in 
  2709. the current session)using this option. Note that STORE, 1 only turns on batch 
  2710. mode for the current record.STORE, 2 does not store a record but makes the 
  2711. file secure. Any records th
  2712. at have been saved previously with the STORE, 1 command will now be made safe 
  2713. on disk. You should always execute a STORE, 2 command after storing records 
  2714. in batch mode.
  2715. STORE, 0 is optional and is the same as STORE on its own:Superbase makes each
  2716. record secure as it is stored. If you were to turn the computer off
  2717. accidentally, the most you would lose would be the data in memory.
  2718.  
  2719. EXAMPLES
  2720. 1    BLANK
  2721.     Firstname="John"
  2722.     Lastname="Roberts"
  2723.     Street="15 Richmond Way"
  2724.     ......
  2725.     ......
  2726.     ......
  2727.     STORE
  2728. 2    FOR n%=1 to 10
  2729.     BLANK
  2730.     Firstname=Recdata$(n%, 1)
  2731.     Lastname=Recadata$(n%, 2)
  2732.     Street=Recdata$(n%, 3)
  2733.     ......
  2734.     ......
  2735.     ......
  2736.     STORE, 1
  2737.     NEXT
  2738.     STORE, 2
  2739.  
  2740. NOTES
  2741. The first example creates a new record and stores it in the normal way. 
  2742. Example 2 creates ten new records, reading data into the fields for each 
  2743. record from the array Recdata$ and storing them in batch mode. When all 
  2744. the records have been stored, it makes
  2745.  the file secure with the STORE, 2 command.
  2746.  
  2747. STR$
  2748. PURPOSE
  2749. Returns the text equivalent of a numeric expression.
  2750.  
  2751. SYNTAX
  2752. STR$(nexpr [[, nexpri [, nexprd]]/[, numeric-format-string]])
  2753.  
  2754. COMMENTS
  2755. STR$ converts data which is held in a numeric variable or numeric field into 
  2756. a text string.
  2757. nexpri specifies the number of integers before the decimal point and should 
  2758. be set large enough to avoid overflow display. nexprd specifies the number of
  2759. integers after the decimal point. The maximum numeric format in Superbase is 
  2760. a total of 13 integers, so nexpri plus nexprd must be less than 14. As an
  2761. alternative to using nexpri and nexprd, you can specify the numeric format 
  2762. as a string(see NUMBASE). If these parameters are not used, the default numeric
  2763. format set by Numeric Format on the Set menu or by the most recent use of
  2764. NUMBASE will be taken. The complementary function to STR$ is VAL.
  2765.  
  2766. EXAMPLES
  2767. 1    textfieldc=STR$(numfielda)
  2768. 2    textfieldc-STR$(numfielda, 5, 0)
  2769. 3    x$=STR$(165.4444, "z999999.00")
  2770.  
  2771. TAN
  2772. PURPOSE
  2773. Returns the tangent of an angle measured in radians.
  2774.  
  2775. SYNTAX
  2776. TAN(nexpr)
  2777.  
  2778. COMMENTS
  2779. The function returns the tangent of the angle in nexpr measured in radians. 
  2780. The complementary function of TAN is ATN.
  2781.  
  2782. EXAMPLES
  2783. 1    numfieldc=TAN(numfielda)
  2784. 2    x%=TAN(y%)
  2785. 3    x%=TAN(VAL(x$))
  2786. 4    ? TAN(x%)
  2787.  
  2788. THOUSECS
  2789. PURPOSE
  2790. Takes a numeric value and returns the number of thousandths of a second left
  2791. over after subtracting the number of seconds.
  2792.  
  2793. SYNTAX
  2794. THOUSECS(nexpr)
  2795.  
  2796. COMMENTS
  2797. nexpr will usually contain a time in milliseconds from a time field or the
  2798. result of a TIMEVAL calculation. THOUSECS returns the same result as nexpr 
  2799. MOD 1000.
  2800.  
  2801. 1    x%=THOUSECS(timefield)
  2802.  
  2803. TIME$
  2804. PURPOSE
  2805. Returns the time in string format from a numeric value which gives the time
  2806. in thousandths of a second.
  2807.  
  2808. SYNTAX
  2809. TIME$(nexpr [, timeformat])
  2810.  
  2811. COMMENTS
  2812. The second argument for this function, timeformat, allows you to specify the
  2813. format the time string will have. It must conform to the rules for Superbase
  2814. time formats given in the keyword entry for DATEBASE.
  2815.  
  2816. EXAMPLES
  2817. 1    x$=TIME$(timefield)
  2818. 2    ? TIME$(NOW, "hh:mm:ssam")
  2819.  
  2820. TIMEVAL
  2821. PURPOSE
  2822. Returns the value of a time string in thousandths of a second.
  2823.  
  2824. SYNTAX
  2825. TIMEVAL(strexpr)
  2826.  
  2827. COMMENTS
  2828. strexpr must contain the time in a valid time format. See the keyword entry for 
  2829. DATEBASE for a list of acceptable time formats.
  2830.  
  2831. EXAMPLES
  2832. 1    t%=TIMEVAL("10:22am")
  2833. 2    t%=TIMEVAL("14:03:12.201")
  2834.  
  2835. TODAY
  2836. PURPOSE
  2837. Gives the system date.
  2838.  
  2839. SYNTAX
  2840. TODAY
  2841.  
  2842. End Of Part 1
  2843.  
  2844.